From 44aad3f84d2a820094f3b5e73722778edc8c23f5 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Tue, 24 Apr 2007 22:40:57 +0000
Subject: [PATCH] Make several significant changes to the OpenDS code base, including:

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/core/OperationTestCase.java                              |    1 
 opends/src/server/org/opends/server/protocols/jmx/RmiAuthenticator.java                                              |    2 
 opends/src/server/org/opends/server/api/DirectoryThread.java                                                         |    8 
 opends/src/server/org/opends/server/messages/CoreMessages.java                                                       |  910 +-
 opends/src/server/org/opends/server/messages/SchemaMessages.java                                                     |  554 +-
 opends/src/server/org/opends/server/protocols/ldap/SearchResultReferenceProtocolOp.java                              |    7 
 opends/src/server/org/opends/server/core/ModifyOperation.java                                                        |   38 
 opends/src/server/org/opends/server/api/plugin/StartupPluginResult.java                                              |    6 
 opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java                                         |    4 
 opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/TestPasswordValidator.java                    |    2 
 opends/src/server/org/opends/server/protocols/ldap/LDAPControl.java                                                  |    6 
 opends/src/server/org/opends/server/controls/EntryChangeNotificationControl.java                                     |    4 
 opends/src/server/org/opends/server/synchronization/plugin/SynchronizationDomain.java                                |   13 
 opends/src/server/org/opends/server/api/TrustManagerProvider.java                                                    |   13 
 opends/src/server/org/opends/server/protocols/internal/InternalSearchOperation.java                                  |    4 
 opends/src/server/org/opends/server/api/InvokableComponent.java                                                      |    1 
 opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/CancelExtendedOperationTestCase.java          |    6 
 opends/src/server/org/opends/server/extensions/TLSConnectionSecurityProvider.java                                    |    6 
 opends/tests/unit-tests-testng/src/server/org/opends/server/core/RejectUnauthReqTests.java                           |    2 
 opends/src/server/org/opends/server/tools/LDAPSearch.java                                                            |    7 
 opends/src/server/org/opends/server/protocols/ldap/ExtendedRequestProtocolOp.java                                    |    9 
 opends/src/server/org/opends/server/tasks/AddSchemaFileTask.java                                                     |    6 
 opends/src/server/org/opends/server/extensions/CharacterSetPasswordValidator.java                                    |    4 
 opends/src/server/org/opends/server/messages/JebMessages.java                                                        |  186 
 opends/src/server/org/opends/server/extensions/GSSAPIStateInfo.java                                                  |    8 
 opends/src/server/org/opends/server/extensions/LengthBasedPasswordValidator.java                                     |    2 
 opends/src/server/org/opends/server/types/operation/PostOperationSearchOperation.java                                |    4 
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestDeleteResponseProtocolOp.java         |    1 
 opends/src/server/org/opends/server/api/Group.java                                                                   |    1 
 opends/src/server/org/opends/server/api/MonitorProvider.java                                                         |   10 
 opends/tests/unit-tests-testng/src/server/org/opends/server/core/AbandonOperationTestCase.java                       |    7 
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyDNRequestProtocolOp.java        |    1 
 opends/src/build-tools/windows/service.h                                                                             |    0 
 opends/src/server/org/opends/server/synchronization/plugin/PendingChange.java                                        |    2 
 opends/src/build-tools/windows/service.c                                                                             |    0 
 opends/src/server/org/opends/server/api/plugin/SearchReferencePluginResult.java                                      |    6 
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestAddResponseProtocolOp.java            |    1 
 opends/src/server/org/opends/server/synchronization/changelog/ServerWriter.java                                      |    2 
 opends/src/server/org/opends/server/controls/LDAPAssertionRequestControl.java                                        |    4 
 opends/src/server/org/opends/server/synchronization/changelog/ChangelogCache.java                                    |    2 
 opends/src/build-tools/org/opends/build/tools/GetSubversionRevision.java                                             |    0 
 opends/src/server/org/opends/server/synchronization/protocol/ModifyDNMsg.java                                        |    2 
 opends/tests/unit-tests-testng/src/server/org/opends/server/controls/MatchedValuesControlTest.java                   |   97 
 opends/src/server/org/opends/server/tools/StopDS.java                                                                |    5 
 opends/src/build-tools/org/opends/build/tools/CoverageDiff.java                                                      |    0 
 opends/src/server/org/opends/server/types/operation/PostResponseModifyOperation.java                                 |    4 
 opends/src/server/org/opends/server/api/ExtendedOperationHandler.java                                                |    7 
 opends/src/server/org/opends/server/api/LogPublisher.java                                                            |    6 
 opends/src/server/org/opends/server/extensions/NullConnectionSecurityProvider.java                                   |    4 
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyResponseProtocolOp.java         |    1 
 opends/src/server/org/opends/server/types/operation/PreOperationAddOperation.java                                    |    4 
 opends/src/server/org/opends/server/backends/SchemaBackend.java                                                      |   25 
 opends/src/server/org/opends/server/synchronization/protocol/DeleteMsg.java                                          |    2 
 opends/src/server/org/opends/server/messages/LoggerMessages.java                                                     |   22 
 opends/src/server/org/opends/server/protocols/ldap/IntermediateResponseProtocolOp.java                               |    9 
 opends/src/server/org/opends/server/backends/jeb/JebFormat.java                                                      |    2 
 opends/src/dsml/org/opends/dsml/protocol/DSMLExtendedOperation.java                                                  |    2 
 opends/src/server/org/opends/server/core/LockFileManager.java                                                        |   17 
 opends/src/server/org/opends/server/types/operation/PreOperationSearchOperation.java                                 |    4 
 opends/src/server/org/opends/server/core/PersistentSearch.java                                                       |    8 
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestSearchProtocolOp.java                 |    1 
 opends/src/server/org/opends/server/core/AbandonOperation.java                                                       |    3 
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyRequestProtocolOp.java          |   26 
 opends/src/server/org/opends/server/protocols/ldap/CompareResponseProtocolOp.java                                    |    9 
 opends/src/server/org/opends/server/types/Schema.java                                                                |    2 
 opends/tests/unit-tests-testng/src/server/org/opends/server/core/UnbindOperationTestCase.java                        |    1 
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyDNResponseProtocolOp.java       |    1 
 opends/src/server/org/opends/server/api/PasswordValidator.java                                                       |    5 
 opends/src/server/org/opends/server/controls/LDAPPreReadResponseControl.java                                         |    2 
 opends/src/server/org/opends/server/core/ModifyDNOperation.java                                                      |   17 
 opends/src/build-tools/javax/jnlp/UnavailableServiceException.java                                                   |    0 
 opends/src/server/org/opends/server/api/plugin/LDIFPluginResult.java                                                 |    6 
 opends/src/server/org/opends/server/types/Operation.java                                                             |  534 +
 opends/src/server/org/opends/server/extensions/ConfigFileHandler.java                                                |   16 
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestDeleteRequestProtocolOp.java          |    1 
 opends/src/server/org/opends/server/protocols/internal/InternalClientConnection.java                                 |  347 +
 opends/src/server/org/opends/server/backends/task/RecurringTask.java                                                 |    2 
 opends/src/server/org/opends/server/core/DeleteOperation.java                                                        |   15 
 opends/src/server/org/opends/server/extensions/AttributeValuePasswordValidator.java                                  |    2 
 opends/src/build-tools/org/opends/build/tools/PrepTestNG.java                                                        |    0 
 opends/src/server/org/opends/server/schema/UniqueMemberEqualityMatchingRule.java                                     |    3 
 opends/src/server/org/opends/server/extensions/TraditionalWorkQueue.java                                             |    7 
 opends/src/server/org/opends/server/tools/RebuildIndex.java                                                          |   20 
 opends/src/server/org/opends/server/extensions/TraditionalWorkerThread.java                                          |   16 
 opends/src/server/org/opends/server/extensions/DictionaryPasswordValidator.java                                      |    6 
 opends/tests/unit-tests-testng/src/server/org/opends/server/controls/ProxiedAuthV1ControlTestCase.java               |    2 
 opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/InitOnLineTest.java                      |  298 
 opends/src/server/org/opends/server/tasks/RebuildTask.java                                                           |   10 
 opends/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandler.java                                      |    2 
 opends/src/server/org/opends/server/types/RawModification.java                                                       |  387 +
 opends/src/server/org/opends/server/core/PasswordPolicyState.java                                                    |   10 
 opends/src/server/org/opends/server/messages/ConfigMessages.java                                                     | 1178 ++--
 opends/src/server/org/opends/server/controls/PersistentSearchControl.java                                            |    4 
 opends/src/server/org/opends/server/core/AddOperation.java                                                           |   33 
 opends/src/server/org/opends/server/tasks/RestoreTask.java                                                           |   12 
 opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java                          |    1 
 opends/src/server/org/opends/server/extensions/SoftReferenceEntryCache.java                                          |   34 
 opends/src/build-tools/javax/jnlp/ServiceManager.java                                                                |    0 
 opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/changelog/dbHandlerTest.java             |   27 
 opends/src/build-tools/windows/Makefile                                                                              |    0 
 opends/src/server/org/opends/server/types/BackupInfo.java                                                            |    2 
 opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/StressTest.java                          |    2 
 opends/src/server/org/opends/server/schema/DirectoryStringSyntax.java                                                |    6 
 opends/src/server/org/opends/server/tools/LDAPDelete.java                                                            |    2 
 opends/src/server/org/opends/server/api/AccessControlHandler.java                                                    |    5 
 opends/src/server/org/opends/server/api/AccessControlProvider.java                                                   |   19 
 opends/src/server/org/opends/server/protocols/ldap/SearchResultEntryProtocolOp.java                                  |    9 
 opends/src/server/org/opends/server/core/RootDNConfigManager.java                                                    |   14 
 opends/src/build-tools/org/opends/build/tools/ConcatSchema.java                                                      |    0 
 opends/src/server/org/opends/server/protocols/ldap/SearchRequestProtocolOp.java                                      |   11 
 opends/src/server/org/opends/server/protocols/ldap/AddResponseProtocolOp.java                                        |    9 
 opends/src/server/org/opends/server/protocols/ldap/LDAPModification.java                                             |  147 
 opends/src/server/org/opends/server/synchronization/protocol/OperationContext.java                                   |    2 
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestLDAPFilter.java                       |   20 
 opends/src/server/org/opends/server/loggers/DirectoryAuditLogger.java                                                |   14 
 opends/src/server/org/opends/server/tasks/ExportTask.java                                                            |   20 
 opends/src/server/org/opends/server/tasks/ShutdownTask.java                                                          |    2 
 opends/src/server/org/opends/server/synchronization/plugin/ChangelogBroker.java                                      |    2 
 opends/src/server/org/opends/server/authorization/dseecompat/DNS.java                                                |    2 
 opends/tests/unit-tests-testng/src/server/org/opends/server/controls/ProxiedAuthV2ControlTestCase.java               |    2 
 opends/src/server/org/opends/server/util/LDIFReader.java                                                             |    3 
 opends/src/server/org/opends/server/util/args/FileBasedArgument.java                                                 |    6 
 opends/src/server/org/opends/server/core/BackendConfigManager.java                                                   |   10 
 opends/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandler.java                         |    6 
 opends/src/server/org/opends/server/backends/task/TaskScheduler.java                                                 |    2 
 opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SchemaSynchronizationTest.java           |   13 
 opends/src/dsml/org/opends/dsml/protocol/DSMLModifyDNOperation.java                                                  |    2 
 opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java                                        |    6 
 opends/src/server/org/opends/server/core/BindOperation.java                                                          |    5 
 opends/src/server/org/opends/server/extensions/SimilarityBasedPasswordValidator.java                                 |    2 
 opends/src/server/org/opends/server/tasks/ImportTask.java                                                            |   18 
 opends/src/server/org/opends/server/config/JMXMBean.java                                                             |   11 
 opends/src/server/org/opends/server/protocols/ldap/AbandonRequestProtocolOp.java                                     |    5 
 opends/src/server/org/opends/server/extensions/MD5PasswordStorageScheme.java                                         |    6 
 opends/src/server/org/opends/server/controls/LDAPPostReadRequestControl.java                                         |    2 
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestBindRequestProtocolOp.java            |  261 
 opends/src/server/org/opends/server/api/plugin/PreOperationPluginResult.java                                         |    6 
 opends/src/server/org/opends/server/backends/task/Task.java                                                          |    2 
 opends/src/server/org/opends/server/controls/PasswordExpiringControl.java                                            |    4 
 opends/src/server/org/opends/server/extensions/FileBasedTrustManagerProvider.java                                    |   52 
 opends/src/server/org/opends/server/messages/UtilityMessages.java                                                    |  260 
 opends/src/server/org/opends/server/api/SubtreeSpecificationSet.java                                                 |  115 
 opends/src/server/org/opends/server/extensions/FIFOEntryCache.java                                                   |   43 
 opends/src/server/org/opends/server/protocols/ldap/BindResponseProtocolOp.java                                       |    7 
 opends/src/server/org/opends/server/types/operation/PostOperationAddOperation.java                                   |    4 
 opends/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java                                    |   14 
 opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPAuthenticationHandlerTestCase.java             |    2 
 opends/src/server/org/opends/server/api/SubstringMatchingRule.java                                                   |    4 
 opends/src/server/org/opends/server/types/operation/PreOperationModifyOperation.java                                 |    4 
 opends/src/server/org/opends/server/tools/LDIFModify.java                                                            |    6 
 opends/src/server/org/opends/server/extensions/SHA1PasswordStorageScheme.java                                        |    6 
 opends/src/server/org/opends/server/messages/ToolMessages.java                                                       | 1116 ++--
 opends/src/server/org/opends/server/api/ApproximateMatchingRule.java                                                 |    4 
 opends/src/server/org/opends/server/tools/VerifyIndex.java                                                           |   20 
 opends/src/server/org/opends/server/api/plugin/PreParsePluginResult.java                                             |    6 
 opends/src/server/org/opends/server/synchronization/protocol/ModifyMsg.java                                          |    9 
 opends/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java                                     |    2 
 opends/src/server/org/opends/server/api/plugin/PostResponsePluginResult.java                                         |    6 
 opends/tests/unit-tests-testng/resource/ldif-diff/diff-nochanges.ldif                                                |    2 
 opends/src/server/org/opends/server/tools/EncodePassword.java                                                        |   14 
 opends/src/build-tools/windows/EventLogMsg.mc                                                                        |    0 
 opends/src/server/org/opends/server/tools/LDAPConnection.java                                                        |    6 
 opends/tests/unit-tests-testng/src/server/org/opends/server/controls/PasswordControlTest.java                        |   70 
 opends/src/server/org/opends/server/controls/LDAPPreReadRequestControl.java                                          |    2 
 opends/src/server/org/opends/server/extensions/SaltedSHA384PasswordStorageScheme.java                                |    9 
 opends/src/server/org/opends/server/messages/MessageHandler.java                                                     |   20 
 opends/src/server/org/opends/server/protocols/ldap/DeleteRequestProtocolOp.java                                      |    9 
 opends/src/server/org/opends/server/extensions/SaltedSHA256PasswordStorageScheme.java                                |    9 
 opends/src/server/org/opends/server/types/operation/PostResponseSearchOperation.java                                 |    4 
 opends/src/server/org/opends/server/api/SubtreeSpecification.java                                                    |   44 
 opends/src/server/org/opends/server/controls/AuthorizationIdentityResponseControl.java                               |    2 
 opends/src/server/org/opends/server/protocols/ldap/BindRequestProtocolOp.java                                        |    1 
 opends/src/server/org/opends/server/controls/PasswordPolicyResponseControl.java                                      |    4 
 opends/src/server/org/opends/server/types/BackupDirectory.java                                                       |   10 
 opends/src/server/org/opends/server/extensions/SaltedSHA1PasswordStorageScheme.java                                  |    9 
 opends/src/server/org/opends/server/messages/AciMessages.java                                                        |  124 
 opends/src/server/org/opends/server/tools/ImportLDIF.java                                                            |   31 
 opends/src/server/org/opends/server/protocols/ldap/LDAPFilter.java                                                   | 1007 ---
 opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java                 |    3 
 opends/src/server/org/opends/server/util/args/ArgumentParser.java                                                    |    2 
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/internal/InternalClientConnectionTestCase.java |    8 
 opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestLDIFWriter.java                                 |   67 
 opends/src/server/org/opends/server/tasks/TaskUtils.java                                                             |   11 
 opends/src/server/org/opends/server/tools/LDAPCompare.java                                                           |    5 
 opends/src/server/org/opends/server/api/CertificateMapper.java                                                       |    4 
 opends/src/server/org/opends/server/api/AttributeValueDecoder.java                                                   |   12 
 opends/src/server/org/opends/server/synchronization/protocol/UpdateMessage.java                                      |    4 
 opends/src/build-tools/org/opends/build/tools/CheckCopyrightDates.java                                               |    0 
 opends/src/server/org/opends/server/types/IntermediateResponse.java                                                  |    1 
 opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/protocol/SynchronizationMsgTest.java     |    6 
 opends/src/server/org/opends/server/controls/PasswordExpiredControl.java                                             |    2 
 opends/src/server/org/opends/server/synchronization/protocol/AddMsg.java                                             |    5 
 opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExactMatchIdentityMapperTestCase.java         |   11 
 opends/src/server/org/opends/server/types/RawAttribute.java                                                          |  370 +
 opends/src/dsml/org/opends/dsml/protocol/DSMLSearchOperation.java                                                    |    2 
 opends/src/server/org/opends/server/api/plugin/SearchEntryPluginResult.java                                          |    6 
 opends/src/server/org/opends/server/extensions/RandomPasswordGenerator.java                                          |   12 
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestAbandonRequestProtocolOp.java         |   59 
 opends/src/server/org/opends/server/backends/MemoryBackend.java                                                      |    2 
 opends/src/server/org/opends/server/protocols/ldap/ModifyResponseProtocolOp.java                                     |    9 
 opends/src/server/org/opends/server/protocols/ldap/SearchResultDoneProtocolOp.java                                   |    9 
 opends/src/server/org/opends/server/schema/NameAndOptionalUIDSyntax.java                                             |    2 
 opends/src/server/org/opends/server/api/VirtualAttributeProvider.java                                                |   14 
 opends/src/server/org/opends/server/backends/jeb/EntryContainer.java                                                 |    4 
 opends/src/server/org/opends/server/messages/ProtocolMessages.java                                                   |  784 +-
 opends/src/server/org/opends/server/types/operation/PostOperationModifyOperation.java                                |    4 
 opends/src/server/org/opends/server/protocols/ldap/LDAPAttribute.java                                                |  179 
 opends/src/server/org/opends/server/extensions/SaltedMD5PasswordStorageScheme.java                                   |    9 
 opends/src/server/org/opends/server/extensions/FileBasedKeyManagerProvider.java                                      |   66 
 opends/src/server/org/opends/server/extensions/SubjectEqualsDNCertificateMapper.java                                 |    4 
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestCompareResponseProtocolOp.java        |    1 
 opends/src/build-tools/windows/common.h                                                                              |    0 
 opends/src/server/org/opends/server/messages/SynchronizationMessages.java                                            |  155 
 opends/src/server/org/opends/server/synchronization/changelog/ChangelogDB.java                                       |    2 
 opends/src/build-tools/windows/common.c                                                                              |    0 
 opends/src/server/org/opends/server/types/LDAPException.java                                                         |  105 
 opends/src/dsml/org/opends/dsml/protocol/DSMLAddOperation.java                                                       |    5 
 opends/src/server/org/opends/server/protocols/ldap/AddRequestProtocolOp.java                                         |   34 
 opends/src/server/org/opends/server/core/SearchOperation.java                                                        |   25 
 opends/src/server/org/opends/server/core/UnbindOperation.java                                                        |    3 
 opends/src/server/org/opends/server/synchronization/plugin/PersistentServerState.java                                |    7 
 opends/src/server/org/opends/server/extensions/UniqueCharactersPasswordValidator.java                                |    2 
 opends/src/server/org/opends/server/protocols/ldap/ModifyDNResponseProtocolOp.java                                   |    9 
 opends/src/server/org/opends/server/tools/ExportLDIF.java                                                            |   28 
 opends/src/server/org/opends/server/controls/PasswordPolicyRequestControl.java                                       |    2 
 opends/tests/unit-tests-testng/src/server/org/opends/server/core/DeleteOperationTestCase.java                        |    1 
 opends/src/server/org/opends/server/controls/AccountUsableResponseControl.java                                       |    4 
 opends/src/server/org/opends/server/api/EqualityMatchingRule.java                                                    |   10 
 opends/src/server/org/opends/server/extensions/CancelExtendedOperation.java                                          |    2 
 opends/src/server/org/opends/server/controls/ProxiedAuthV1Control.java                                               |    4 
 opends/src/server/org/opends/server/extensions/SaltedSHA512PasswordStorageScheme.java                                |    9 
 opends/tests/unit-tests-testng/src/server/org/opends/server/messages/UnregisteredMessageIDsTestCase.java             |   39 
 opends/src/build-tools/org/opends/build/tools/CheckEOLStyle.java                                                     |    0 
 opends/src/server/org/opends/server/types/Entry.java                                                                 |    7 
 opends/src/server/org/opends/server/types/RawFilter.java                                                             | 1303 +++++
 opends/src/server/org/opends/server/tools/LDAPModify.java                                                            |   15 
 opends/src/server/org/opends/server/api/PasswordGenerator.java                                                       |    4 
 opends/src/dsml/org/opends/dsml/protocol/DSMLCompareOperation.java                                                   |    2 
 opends/tests/unit-tests-testng/src/server/org/opends/server/core/ModifyOperationTestCase.java                        |  164 
 opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestLDIFReader.java                                 |    3 
 opends/src/server/org/opends/server/controls/ProxiedAuthV2Control.java                                               |    6 
 opends/src/server/org/opends/server/protocols/ldap/ModifyDNRequestProtocolOp.java                                    |    9 
 opends/src/server/org/opends/server/protocols/ldap/ProtocolOp.java                                                   |    4 
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestAddRequestProtocolOp.java             |   28 
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestBindResponseProtocolOp.java           |   65 
 opends/src/server/org/opends/server/controls/AccountUsableRequestControl.java                                        |    2 
 opends/build.xml                                                                                                     |  116 
 opends/src/server/org/opends/server/core/CompareOperation.java                                                       |    5 
 opends/src/server/org/opends/server/tools/LDAPAuthenticationHandler.java                                             |  162 
 opends/src/server/org/opends/server/messages/BackendMessages.java                                                    |  568 +-
 opends/src/server/org/opends/server/extensions/RepeatedCharactersPasswordValidator.java                              |    2 
 opends/src/server/org/opends/server/controls/MatchedValuesControl.java                                               |    4 
 opends/tests/unit-tests-testng/src/server/org/opends/server/controls/PersistentSearchControlTest.java                |   24 
 opends/tests/unit-tests-testng/src/server/org/opends/server/api/PasswordValidatorTestCase.java                       |   11 
 opends/src/server/org/opends/server/util/ModifyChangeRecordEntry.java                                                |   10 
 opends/tests/unit-tests-testng/src/server/org/opends/server/core/AddOperationTestCase.java                           |   52 
 opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ProtocolWindowTest.java                  |    4 
 opends/src/server/org/opends/server/core/DefaultAccessControlProvider.java                                           |    1 
 opends/src/server/org/opends/server/types/operation/PostResponseAddOperation.java                                    |    4 
 opends/src/build-tools/javax/jnlp/DownloadService.java                                                               |    0 
 opends/src/build-tools/windows/winlauncher.h                                                                         |    0 
 opends/src/server/org/opends/server/controls/PersistentSearchChangeType.java                                         |    2 
 opends/src/server/org/opends/server/protocols/ldap/ModifyRequestProtocolOp.java                                      |   30 
 opends/src/server/org/opends/server/api/AttributeSyntax.java                                                         |    4 
 opends/src/server/org/opends/server/api/MatchingRule.java                                                            |    4 
 opends/src/build-tools/windows/winlauncher.c                                                                         |    0 
 opends/src/server/org/opends/server/api/SynchronizationProvider.java                                                 |    6 
 opends/src/server/org/opends/server/core/SchemaConfigManager.java                                                    |   34 
 opends/src/server/org/opends/server/extensions/GSSAPISASLMechanismHandler.java                                       |    8 
 opends/src/dsml/org/opends/dsml/protocol/DSMLModifyOperation.java                                                    |    7 
 opends/src/server/org/opends/server/protocols/ldap/LDAPRequestHandler.java                                           |    2 
 opends/src/build-tools/windows/README                                                                                |    0 
 opends/src/server/org/opends/server/protocols/ldap/ExtendedResponseProtocolOp.java                                   |    9 
 opends/src/server/org/opends/server/api/plugin/PostDisconnectPluginResult.java                                       |    6 
 opends/src/server/org/opends/server/types/operation/PreParseModifyOperation.java                                     |    8 
 opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestModifyChangeRecordEntry.java                    |   13 
 opends/src/server/org/opends/server/types/operation/SearchReferenceSearchOperation.java                              |    4 
 opends/src/server/org/opends/server/authorization/dseecompat/AciContainer.java                                       |    2 
 opends/src/server/org/opends/server/synchronization/changelog/Changelog.java                                         |    2 
 opends/src/server/org/opends/server/controls/PagedResultsControl.java                                                |    2 
 opends/src/server/org/opends/server/core/PluginConfigManager.java                                                    |    1 
 opends/src/server/org/opends/server/protocols/ldap/LDAPMessage.java                                                  |    9 
 opends/src/dsml/org/opends/dsml/protocol/DSMLDeleteOperation.java                                                    |    2 
 opends/src/server/org/opends/server/api/AccountStatusNotificationHandler.java                                        |    6 
 opends/src/server/org/opends/server/types/operation/SearchEntrySearchOperation.java                                  |    4 
 opends/src/server/org/opends/server/api/plugin/PostOperationPluginResult.java                                        |    6 
 opends/src/server/org/opends/server/synchronization/changelog/ChangelogDbEnv.java                                    |    2 
 opends/src/server/org/opends/server/tools/BackUpDB.java                                                              |   53 
 opends/src/server/org/opends/server/controls/LDAPPostReadResponseControl.java                                        |    2 
 opends/src/server/org/opends/server/messages/ExtensionsMessages.java                                                 |  940 +-
 opends/src/server/org/opends/server/backends/MonitorBackend.java                                                     |    4 
 opends/src/server/org/opends/server/messages/TaskMessages.java                                                       |   34 
 opends/src/server/org/opends/server/synchronization/changelog/DbHandler.java                                         |    2 
 opends/src/server/org/opends/server/messages/AdminMessages.java                                                      |   34 
 opends/src/server/org/opends/server/synchronization/plugin/MultimasterSynchronization.java                           |    9 
 opends/src/server/org/opends/server/extensions/StartTLSExtendedOperation.java                                        |    7 
 opends/src/server/org/opends/server/synchronization/plugin/ListenerThread.java                                       |    2 
 opends/src/server/org/opends/server/backends/task/TaskBackend.java                                                   |   10 
 opends/src/server/org/opends/server/extensions/ExternalSASLMechanismHandler.java                                     |    4 
 opends/src/server/org/opends/server/protocols/ldap/CompareRequestProtocolOp.java                                     |    9 
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestLDAPException.java                    |   39 
 opends/src/server/org/opends/server/types/operation/PreParseAddOperation.java                                        |    9 
 opends/tests/unit-tests-testng/src/server/org/opends/server/TestAccessLogger.java                                    |   13 
 opends/src/server/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java                                          |    7 
 opends/src/server/org/opends/server/api/AlertGenerator.java                                                          |    1 
 opends/src/server/org/opends/server/types/LDAPURL.java                                                               |    3 
 opends/src/server/org/opends/server/core/AccessControlConfigManager.java                                             |    6 
 opends/src/server/org/opends/server/api/plugin/PostConnectPluginResult.java                                          |    6 
 opends/src/server/org/opends/server/api/OrderingMatchingRule.java                                                    |    4 
 opends/src/server/org/opends/server/tools/BackendToolUtils.java                                                      |   49 
 opends/src/server/org/opends/server/synchronization/changelog/ServerReader.java                                      |    2 
 opends/src/server/org/opends/server/core/ExtendedOperation.java                                                      |    3 
 opends/src/server/org/opends/server/core/PasswordPolicy.java                                                         |   60 
 opends/src/server/org/opends/server/util/args/SubCommandArgumentParser.java                                          |    2 
 opends/src/server/org/opends/server/extensions/TLSCapableConnection.java                                             |    2 
 opends/src/server/org/opends/server/controls/MatchedValuesFilter.java                                                |  119 
 opends/src/server/org/opends/server/schema/TelephoneNumberSyntax.java                                                |    6 
 opends/tests/unit-tests-testng/src/server/org/opends/server/core/CompareOperationTestCase.java                       |    1 
 opends/src/server/org/opends/server/types/CryptoManager.java                                                         |    6 
 opends/src/server/org/opends/server/backends/BackupBackend.java                                                      |    8 
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestSearchResultEntryProtocolOp.java      |    1 
 opends/src/server/org/opends/server/api/WorkQueue.java                                                               |    6 
 opends/src/server/org/opends/server/protocols/ldap/UnbindRequestProtocolOp.java                                      |   10 
 opends/src/server/org/opends/server/api/PasswordStorageScheme.java                                                   |    4 
 opends/src/server/org/opends/server/tasks/BackupTask.java                                                            |   16 
 opends/src/server/org/opends/server/tools/RestoreDB.java                                                             |   18 
 opends/src/server/org/opends/server/api/plugin/IntermediateResponsePluginResult.java                                 |    6 
 opends/src/server/org/opends/server/protocols/ldap/DeleteResponseProtocolOp.java                                     |    6 
 opends/src/server/org/opends/server/types/operation/PreParseSearchOperation.java                                     |    6 
 opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestCompareRequestProtocolOp.java         |    1 
 opends/src/server/org/opends/server/protocols/jmx/JmxClientConnection.java                                           |   13 
 opends/src/server/org/opends/server/messages/PluginMessages.java                                                     |  136 
 opends/src/server/org/opends/server/api/SASLMechanismHandler.java                                                    |    3 
 opends/src/build-tools/javax/jnlp/DownloadServiceListener.java                                                       |    0 
 opends/src/server/org/opends/server/core/DirectoryServer.java                                                        |    2 
 opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java                                  |    8 
 opends/src/server/org/opends/server/api/ClientConnection.java                                                        |    4 
 opends/src/server/org/opends/server/extensions/PKCS11KeyManagerProvider.java                                         |   37 
 /dev/null                                                                                                            |   65 
 opends/src/server/org/opends/server/types/IdentifiedException.java                                                   |    2 
 opends/src/server/org/opends/server/tools/ListBackends.java                                                          |   19 
 opends/src/server/org/opends/server/synchronization/changelog/ServerHandler.java                                     |    2 
 342 files changed, 8,395 insertions(+), 7,125 deletions(-)

diff --git a/opends/build.xml b/opends/build.xml
index 0d2bd16..ca0d689 100644
--- a/opends/build.xml
+++ b/opends/build.xml
@@ -45,8 +45,7 @@
   <property name="build.debuglevel"    value="lines,vars,source"       />
 
   <!-- Properties for build tools                                   -->
-  <property name="buildtools.dir" location="build-tools"              />
-  <property name="buildtools.src.dir" location="${buildtools.dir}/src" />
+  <property name="buildtools.src.dir" location="src/build-tools" />
   <property name="buildtools.classes.dir" location="${build.dir}/build-tools/classes" />
 
   <!-- Properties for use in unit testing.                           -->
@@ -134,6 +133,8 @@
   <property name="admin.src.dir"   location="src/admin/generated" />
   <property name="admin.rules.dir" location="resource/admin" />
 
+
+
   <!-- Create a package bundle containing the DSML library. -->
   <target name="dsml" depends="predsml,package"
        description="Build a Directory Server package bundle with DSML.">
@@ -144,7 +145,8 @@
 
   <!-- The build target that should be used before committing code. -->
   <target name="precommit" depends="checkstyle,clean,copyrightdates,eolstyle,dsml,javadoc,testwithcoverage"
-       description="Perform all processing needed before committing code." />
+       description="Perform all processing needed before committing code.">
+  </target>
 
 
 
@@ -152,14 +154,16 @@
   <!-- The build target that should be used for nightly builds. -->
   <target name="nightly"
        depends="enableweave,checkstyle,dsml,javadoc,coverage,testall"
-       description="Perform all processing needed for nightly builds." />
+       description="Perform all processing needed for nightly builds.">
+  </target>
 
 
 
 
   <!-- The build target that should be used for weekly builds. -->
   <target name="weekly" depends="nightly"
-       description="Perform all processing needed for weekly builds." />
+       description="Perform all processing needed for weekly builds.">
+  </target>
 
 
 
@@ -167,7 +171,8 @@
   <!-- The build target that should be used to build everything. -->
   <target name="all"
        depends="enableweave,checkstyle,clean,copyrightdates,eolstyle,dsml,javadoc,testallwithcoverage"
-       description="Build using all defined targets." />
+       description="Build using all defined targets.">
+  </target>
 
 
 
@@ -184,12 +189,20 @@
   </target>
 
 
+
   <!-- Perform common initialization common to several targets after cleaning out the previous build environment. -->
-  <target name="cleaninit" depends="clean,init"/>
+  <target name="cleaninit" depends="clean,init">
+  </target>
+
 
 
   <!-- Perform common initialization common to several targets. -->
   <target name="init">
+
+    <path id="run.classpath">
+      <pathelement location="${classes.dir}" />
+    </path>
+
     <tstamp>
       <format property="timestamp" pattern="yyyyMMddHHmmss" />
     </tstamp>
@@ -400,11 +413,12 @@
        description="Recompile the Directory Server source files.">
   </target>
 
+
+
   <!-- Compile the Directory Server source files. -->
   <target name="compile"
        depends="init,dynamicconstants,compileadmin"
        description="Compile the Directory Server source files.">
-
     <mkdir dir="${classes.dir}" />
 
     <javac srcdir="${src.dir}:${admin.src.dir}" destdir="${classes.dir}"
@@ -422,12 +436,16 @@
     </javac>
   </target>
 
+
+
   <target name="prepweave">
     <condition property="weave.enabled" value="true">
         <equals arg1="${WEAVE_ENABLED}" arg2="true" />
     </condition>
   </target>
 
+
+
   <target name="weave" if="weave.enabled" depends="compile, prepweave">
     <echo message="  Weaving the source code with automatic AspectJ debug logging."/>
     <echo message="  Build with -DWEAVE_ENABLED=false to turn this off."/>
@@ -449,10 +467,10 @@
   </target>
 
 
+
   <!-- Compile the Quick Setup source files. -->
   <target name="compilequicksetup" depends="buildtools,weave"
           description="Compile the Quick Setup source files.">
-
     <mkdir dir="${quicksetup.classes.dir}" />
     <javac srcdir="${src.dir}" destdir="${quicksetup.classes.dir}"
                debug="on" debuglevel="${build.debuglevel}" source="1.5"
@@ -483,10 +501,11 @@
     </copy>
   </target>
 
+
+
   <!-- Compile the Status Panel source files. -->
   <target name="compilestatuspanel" depends="compilequicksetup"
            description="Compile the Status Panel source files.">
-
     <mkdir dir="${statuspanel.classes.dir}" />
     <javac srcdir="${statuspanel.src.dir}" destdir="${statuspanel.classes.dir}"
            debug="on" debuglevel="${build.debuglevel}" source="1.5"
@@ -505,6 +524,8 @@
     </copy>
   </target>
 
+
+
   <!--
    ! Rebuild the Directory Server without destroying any existing configuration
    ! or data.  It will only overwrite the libraries, classes, and scripts, and
@@ -513,7 +534,6 @@
    ! -->
   <target name="rebuild"
        description="Rebuild the server without destroying config or data.">
-
     <!-- Set the amount of memory to use for the build -->
     <condition property="MEM" value="128M">
       <not>
@@ -626,7 +646,6 @@
   <!-- Populate the Directory Server package, but don't zip it up. -->
   <target name="prepackage" depends="cleancompile"
        description="Prepare the Directory Server package structure.">
-
     <property name="pkgversion"
          value="${MAJOR_VERSION}.${MINOR_VERSION}${VERSION_QUALIFIER}" />
     <property name="pdir"
@@ -734,7 +753,6 @@
   <!-- Package the Directory Server for distribution. -->
   <target name="package" depends="prepackage"
        description="Package the Directory Server for distribution.">
-
     <zip destfile="${package.dir}/OpenDS-${pkgversion}.zip">
       <zipfileset dir="${package.dir}" includes="OpenDS-${pkgversion}/**/*"
            excludes="OpenDS-${pkgversion}/bin/*,OpenDS-${pkgversion}/setup,OpenDS-${pkgversion}/uninstall"
@@ -750,10 +768,11 @@
     </zip>
   </target>
 
+
+
   <!-- Prepare the Directory Server DSML library. -->
   <target name="predsml" depends="prepackage"
        description="Prepare the Directory Server DSML library.">
-
     <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask">
       <classpath>
         <fileset dir="${dsml.lib.dir}">
@@ -829,7 +848,6 @@
   <!-- Generate JavaDoc documentation from the source files -->
   <target name="javadoc" depends="dsml,compileadmin"
        description="Generate JavaDoc documentation.">
-
     <mkdir dir="${javadoc.dir}" />
 
     <javadoc destdir="${javadoc.dir}" source="1.5" additionalparam="-quiet"
@@ -858,7 +876,6 @@
 
   <!-- Internal target to prepare to generate a code coverage report. -->
   <target name="coverage">
-
     <property name="coverage.enabled" value="true" />
 
     <mkdir dir="${coverage.dir}"        />
@@ -876,7 +893,6 @@
   <!-- Prepare to execute the Directory Server TestNG unit tests. -->
   <target name="testinit" depends="buildtools, weave"
          description="Prepare to execute the Directory Server TestNG unit tests.">
-
     <!-- If we are to perform coverage tests, then set that up. -->
     <path id="emma.lib">
       <pathelement location="${emma.dir}/emma.jar"     />
@@ -966,6 +982,8 @@
     <antcall target="testinit.checkFailedTestsOnly"/>
   </target>
 
+
+
   <!-- If we were asked to run only the tests that failed,
       then we overwrite the testng.xml that we just generated
       with testng-failed.xml, which TestNG generated. -->
@@ -992,6 +1010,8 @@
     <echo message="Will run the failed unit tests only"/>
   </target>
 
+
+
   <!-- Generate coverage diff report -->
   <target name="coveragediff">
     <condition property="test.diff.srcpath" value="">
@@ -1039,16 +1059,22 @@
 
   </target>
 
+
+
   <!-- Execute the Directory Server TestNG unit tests in text mode. -->
   <target name="enableTestNGAssertions">
     <property name="TESTASSERT" value="true"/>
   </target>
 
+
+
   <!-- Execute Directory Server TestNG unit tests specified from CLI -->
   <target name="testcustom">
     <echo message="This target is deprecated. Please use the test target as it now supports the test.* properties." />
   </target>
 
+
+
   <!-- Execute all of the Directory Server TestNG unit tests in text mode. -->
   <target name="testall"
           depends="enableweave,enableTestNGAssertions,prepdefaultalltest,testinit,runtests"
@@ -1056,29 +1082,38 @@
   </target>
 
 
+
   <!-- Execute the Directory Server TestNG unit tests in text mode. -->
   <target name="test"
           depends="enableweave,testinit,runtests"
           description="Execute the Directory Server TestNG unit tests in text mode.  Set '-Dorg.opends.test.suppressOutput=false' to see the output from the unit tests.  Set '-Dtest.failures=true' to run only the tests that failed previously.">
   </target>
 
+
+
   <!-- Execute the Directory Server TestNG unit tests in text mode with a coverage report. -->
   <target name="testwithcoverage"
           depends="coverage,test,coveragediff"
           description="Execute the Directory Server TestNG unit tests in text mode with a coverage report.  Use -Dtest.packages, -Dtest.classes, or -Dtest.methods to control which unit tests are run.  Use -Dtest.diff.srcpath to control which src files show up in the coverage diff.  See the 'test' package for other properties you can set.">
   </target>
 
+
+
   <!-- Execute the Directory Server TestNG unit tests in text mode with a coverage report and slow tests. -->
   <target name="testallwithcoverage"
           depends="coverage,testall,coveragediff"
           description="The same as 'testwithcoverage' except 'testall' is run instead of 'test'.">
   </target>
 
+
+
   <!-- Execute the Directory Server TestNG unit tests specified from CLI in text mode with a coverage report. -->
   <target name="testcustomwithcoverage">
     <echo message="This target is deprecated. Please use the testwithcoverage target as it now supports the test.* properties." />
   </target>
 
+
+
   <target name="testhelp" unless="disable.test.help">
     <echo message="About to run the unit tests.  Ant options to control the tests:"/>
     <echo message=""/>
@@ -1129,6 +1164,8 @@
     <echo message=""/>
   </target>
 
+
+
   <!-- Internal target to execute the Directory Server TestNG unit tests in text mode after everything has been initialized. -->
   <target name="runtests">
     <antcall target="testhelp"/>
@@ -1249,6 +1286,8 @@
 
   </target>
 
+
+
   <target name="prepdefaultalltest">
     <condition property="test.groups" value="">
       <not>
@@ -1262,6 +1301,8 @@
     </condition>
   </target>
 
+
+
   <target name="enableweave">
     <condition property="WEAVE_ENABLED" value="true">
       <not>
@@ -1276,6 +1317,8 @@
     </condition>
   </target>
 
+
+
   <target name="testreport"
         depends="test"
         description="Takes testng results and convert them into JUnit compatible xml">
@@ -1290,15 +1333,14 @@
 
 
   <target name="integration-tests"
-            description="Builds the integration tests"
-            >
+            description="Builds the integration tests">
     <ant dir="${functest.testng.dir}" inheritall="false"/>
   </target>
 
 
-  <target name="buildtools"
-        description="Builds the build tools">
 
+  <target name="buildtools" depends="init"
+        description="Builds the build tools">
     <!-- Set the amount of memory to use for the build -->
     <condition property="MEM" value="128M">
       <not>
@@ -1335,8 +1377,34 @@
          basedir="${buildtools.classes.dir}" compress="true" index="true" />
   </target>
 
+
+
   <!-- Code generation for core administration components. -->
   <target name="compileadmin" depends="validateadmin" description="Code generation for configuration Object.">
+    <!-- The XSLT task creates a lot of noise.
+         I can't find any other way to shut it up. -->
+
+    <condition property="antcmd" value="ant.bat">
+      <os family="windows" />
+    </condition>
+    
+    <condition property="antcmd" value="ant">
+      <not>
+        <isset property="antcmd" />
+      </not>
+    </condition>
+    
+    <exec executable="${ant.home}/bin/${antcmd}">
+      <arg value="-buildfile" />
+      <arg value="${ant.file}" />
+      <arg value="-quiet" />
+      <arg value="compileadminsubtask" />
+    </exec>
+  </target>
+
+
+
+  <target name="compileadminsubtask">
     <!-- Generate introspection API for core administration components. -->
     <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/*Configuration.xml" style="${admin.rules.dir}/metaMO.xsl">
       <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/meta/\2CfgDefn.java" />
@@ -1393,6 +1461,8 @@
     <delete dir="${admin.temp.dir}" />
   </target>
 
+
+
   <!-- Remove all dynamically-generated build files. -->
   <target name="cleanadmin" description="Clean up any generated source files for admin">
     <delete includeemptydirs="true">
@@ -1400,6 +1470,8 @@
     </delete>
   </target>
 
+
+
   <!-- Validate core administration component XML definition files. -->
   <target name="validateadmin" description="Validate core administration component XML definition files.">
     <schemavalidate>
@@ -1409,6 +1481,8 @@
     </schemavalidate>
   </target>
 
+
+
   <!-- Generate example plugin package. -->
   <target name="example-plugin" if="pdir">
     <!-- Create folder hierarchy in temporary directory. -->
diff --git a/opends/build-tools/src/javax/jnlp/DownloadService.java b/opends/src/build-tools/javax/jnlp/DownloadService.java
similarity index 100%
rename from opends/build-tools/src/javax/jnlp/DownloadService.java
rename to opends/src/build-tools/javax/jnlp/DownloadService.java
diff --git a/opends/build-tools/src/javax/jnlp/DownloadServiceListener.java b/opends/src/build-tools/javax/jnlp/DownloadServiceListener.java
similarity index 100%
rename from opends/build-tools/src/javax/jnlp/DownloadServiceListener.java
rename to opends/src/build-tools/javax/jnlp/DownloadServiceListener.java
diff --git a/opends/build-tools/src/javax/jnlp/ServiceManager.java b/opends/src/build-tools/javax/jnlp/ServiceManager.java
similarity index 100%
rename from opends/build-tools/src/javax/jnlp/ServiceManager.java
rename to opends/src/build-tools/javax/jnlp/ServiceManager.java
diff --git a/opends/build-tools/src/javax/jnlp/UnavailableServiceException.java b/opends/src/build-tools/javax/jnlp/UnavailableServiceException.java
similarity index 100%
rename from opends/build-tools/src/javax/jnlp/UnavailableServiceException.java
rename to opends/src/build-tools/javax/jnlp/UnavailableServiceException.java
diff --git a/opends/build-tools/src/org/opends/build/tools/CheckCopyrightDates.java b/opends/src/build-tools/org/opends/build/tools/CheckCopyrightDates.java
similarity index 100%
rename from opends/build-tools/src/org/opends/build/tools/CheckCopyrightDates.java
rename to opends/src/build-tools/org/opends/build/tools/CheckCopyrightDates.java
diff --git a/opends/build-tools/src/org/opends/build/tools/CheckEOLStyle.java b/opends/src/build-tools/org/opends/build/tools/CheckEOLStyle.java
similarity index 100%
rename from opends/build-tools/src/org/opends/build/tools/CheckEOLStyle.java
rename to opends/src/build-tools/org/opends/build/tools/CheckEOLStyle.java
diff --git a/opends/build-tools/src/org/opends/build/tools/ConcatSchema.java b/opends/src/build-tools/org/opends/build/tools/ConcatSchema.java
similarity index 100%
rename from opends/build-tools/src/org/opends/build/tools/ConcatSchema.java
rename to opends/src/build-tools/org/opends/build/tools/ConcatSchema.java
diff --git a/opends/build-tools/src/org/opends/build/tools/CoverageDiff.java b/opends/src/build-tools/org/opends/build/tools/CoverageDiff.java
similarity index 100%
rename from opends/build-tools/src/org/opends/build/tools/CoverageDiff.java
rename to opends/src/build-tools/org/opends/build/tools/CoverageDiff.java
diff --git a/opends/build-tools/src/org/opends/build/tools/GetSubversionRevision.java b/opends/src/build-tools/org/opends/build/tools/GetSubversionRevision.java
similarity index 100%
rename from opends/build-tools/src/org/opends/build/tools/GetSubversionRevision.java
rename to opends/src/build-tools/org/opends/build/tools/GetSubversionRevision.java
diff --git a/opends/build-tools/src/org/opends/build/tools/PrepTestNG.java b/opends/src/build-tools/org/opends/build/tools/PrepTestNG.java
similarity index 100%
rename from opends/build-tools/src/org/opends/build/tools/PrepTestNG.java
rename to opends/src/build-tools/org/opends/build/tools/PrepTestNG.java
diff --git a/opends/build-tools/src/windows/EventLogMsg.mc b/opends/src/build-tools/windows/EventLogMsg.mc
similarity index 100%
rename from opends/build-tools/src/windows/EventLogMsg.mc
rename to opends/src/build-tools/windows/EventLogMsg.mc
diff --git a/opends/build-tools/src/windows/Makefile b/opends/src/build-tools/windows/Makefile
similarity index 100%
rename from opends/build-tools/src/windows/Makefile
rename to opends/src/build-tools/windows/Makefile
diff --git a/opends/build-tools/src/windows/README b/opends/src/build-tools/windows/README
similarity index 100%
rename from opends/build-tools/src/windows/README
rename to opends/src/build-tools/windows/README
diff --git a/opends/build-tools/src/windows/common.c b/opends/src/build-tools/windows/common.c
similarity index 100%
rename from opends/build-tools/src/windows/common.c
rename to opends/src/build-tools/windows/common.c
diff --git a/opends/build-tools/src/windows/common.h b/opends/src/build-tools/windows/common.h
similarity index 100%
rename from opends/build-tools/src/windows/common.h
rename to opends/src/build-tools/windows/common.h
diff --git a/opends/build-tools/src/windows/service.c b/opends/src/build-tools/windows/service.c
similarity index 100%
rename from opends/build-tools/src/windows/service.c
rename to opends/src/build-tools/windows/service.c
diff --git a/opends/build-tools/src/windows/service.h b/opends/src/build-tools/windows/service.h
similarity index 100%
rename from opends/build-tools/src/windows/service.h
rename to opends/src/build-tools/windows/service.h
diff --git a/opends/build-tools/src/windows/winlauncher.c b/opends/src/build-tools/windows/winlauncher.c
similarity index 100%
rename from opends/build-tools/src/windows/winlauncher.c
rename to opends/src/build-tools/windows/winlauncher.c
diff --git a/opends/build-tools/src/windows/winlauncher.h b/opends/src/build-tools/windows/winlauncher.h
similarity index 100%
rename from opends/build-tools/src/windows/winlauncher.h
rename to opends/src/build-tools/windows/winlauncher.h
diff --git a/opends/src/dsml/org/opends/dsml/protocol/DSMLAddOperation.java b/opends/src/dsml/org/opends/dsml/protocol/DSMLAddOperation.java
index b608b03..a7a41b6 100644
--- a/opends/src/dsml/org/opends/dsml/protocol/DSMLAddOperation.java
+++ b/opends/src/dsml/org/opends/dsml/protocol/DSMLAddOperation.java
@@ -37,10 +37,11 @@
 import org.opends.server.protocols.ldap.AddRequestProtocolOp;
 import org.opends.server.protocols.ldap.AddResponseProtocolOp;
 import org.opends.server.protocols.ldap.LDAPAttribute;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPMessage;
 import org.opends.server.protocols.ldap.ProtocolOp;
 import org.opends.server.tools.LDAPConnection;
+import org.opends.server.types.LDAPException;
+import org.opends.server.types.RawAttribute;
 
 
 
@@ -99,7 +100,7 @@
     addResponse.setRequestID(requestID);
 
     ASN1OctetString dnStr = new ASN1OctetString(addRequest.getDn());
-    ArrayList<LDAPAttribute> attributes = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attributes = new ArrayList<RawAttribute>();
 
     List<DsmlAttr> addList = addRequest.getAttr();
     for(DsmlAttr attr : addList)
diff --git a/opends/src/dsml/org/opends/dsml/protocol/DSMLCompareOperation.java b/opends/src/dsml/org/opends/dsml/protocol/DSMLCompareOperation.java
index 88a6a98..1ded6cb 100644
--- a/opends/src/dsml/org/opends/dsml/protocol/DSMLCompareOperation.java
+++ b/opends/src/dsml/org/opends/dsml/protocol/DSMLCompareOperation.java
@@ -36,10 +36,10 @@
 import org.opends.server.protocols.asn1.ASN1Sequence;
 import org.opends.server.protocols.ldap.CompareRequestProtocolOp;
 import org.opends.server.protocols.ldap.CompareResponseProtocolOp;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPMessage;
 import org.opends.server.protocols.ldap.ProtocolOp;
 import org.opends.server.tools.LDAPConnection;
+import org.opends.server.types.LDAPException;
 
 
 
diff --git a/opends/src/dsml/org/opends/dsml/protocol/DSMLDeleteOperation.java b/opends/src/dsml/org/opends/dsml/protocol/DSMLDeleteOperation.java
index 3c828a6..7a3ef58 100644
--- a/opends/src/dsml/org/opends/dsml/protocol/DSMLDeleteOperation.java
+++ b/opends/src/dsml/org/opends/dsml/protocol/DSMLDeleteOperation.java
@@ -34,10 +34,10 @@
 import org.opends.server.protocols.asn1.ASN1Sequence;
 import org.opends.server.protocols.ldap.DeleteRequestProtocolOp;
 import org.opends.server.protocols.ldap.DeleteResponseProtocolOp;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPMessage;
 import org.opends.server.protocols.ldap.ProtocolOp;
 import org.opends.server.tools.LDAPConnection;
+import org.opends.server.types.LDAPException;
 
 
 /**
diff --git a/opends/src/dsml/org/opends/dsml/protocol/DSMLExtendedOperation.java b/opends/src/dsml/org/opends/dsml/protocol/DSMLExtendedOperation.java
index 92aa808..7628c3d 100644
--- a/opends/src/dsml/org/opends/dsml/protocol/DSMLExtendedOperation.java
+++ b/opends/src/dsml/org/opends/dsml/protocol/DSMLExtendedOperation.java
@@ -36,10 +36,10 @@
 import org.opends.server.protocols.asn1.ASN1Sequence;
 import org.opends.server.protocols.ldap.ExtendedRequestProtocolOp;
 import org.opends.server.protocols.ldap.ExtendedResponseProtocolOp;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPMessage;
 import org.opends.server.protocols.ldap.ProtocolOp;
 import org.opends.server.tools.LDAPConnection;
+import org.opends.server.types.LDAPException;
 
 
 
diff --git a/opends/src/dsml/org/opends/dsml/protocol/DSMLModifyDNOperation.java b/opends/src/dsml/org/opends/dsml/protocol/DSMLModifyDNOperation.java
index fa61ecb..cd8a830 100644
--- a/opends/src/dsml/org/opends/dsml/protocol/DSMLModifyDNOperation.java
+++ b/opends/src/dsml/org/opends/dsml/protocol/DSMLModifyDNOperation.java
@@ -35,11 +35,11 @@
 import org.opends.server.protocols.asn1.ASN1Exception;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPMessage;
 import org.opends.server.protocols.ldap.ModifyDNRequestProtocolOp;
 import org.opends.server.protocols.ldap.ModifyDNResponseProtocolOp;
 import org.opends.server.protocols.ldap.ProtocolOp;
+import org.opends.server.types.LDAPException;
 
 
 
diff --git a/opends/src/dsml/org/opends/dsml/protocol/DSMLModifyOperation.java b/opends/src/dsml/org/opends/dsml/protocol/DSMLModifyOperation.java
index 5084091..b62428b 100644
--- a/opends/src/dsml/org/opends/dsml/protocol/DSMLModifyOperation.java
+++ b/opends/src/dsml/org/opends/dsml/protocol/DSMLModifyOperation.java
@@ -37,14 +37,15 @@
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
 import org.opends.server.protocols.ldap.LDAPAttribute;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPMessage;
 import org.opends.server.protocols.ldap.LDAPModification;
 import org.opends.server.protocols.ldap.ModifyRequestProtocolOp;
 import org.opends.server.protocols.ldap.ModifyResponseProtocolOp;
 import org.opends.server.protocols.ldap.ProtocolOp;
 import org.opends.server.tools.LDAPConnection;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.RawModification;
 
 
 
@@ -100,8 +101,8 @@
 
     modResponse.setRequestID(requestID);
 
-    ArrayList<LDAPModification> modifications =
-         new ArrayList<LDAPModification> ();
+    ArrayList<RawModification> modifications =
+         new ArrayList<RawModification> ();
 
     // Read the modification type from the DSML request.
     List<DsmlModification> mods = modifyRequest.getModification();
diff --git a/opends/src/dsml/org/opends/dsml/protocol/DSMLSearchOperation.java b/opends/src/dsml/org/opends/dsml/protocol/DSMLSearchOperation.java
index a8c344d..81d1ebc 100644
--- a/opends/src/dsml/org/opends/dsml/protocol/DSMLSearchOperation.java
+++ b/opends/src/dsml/org/opends/dsml/protocol/DSMLSearchOperation.java
@@ -40,7 +40,6 @@
 import org.opends.server.protocols.asn1.ASN1Sequence;
 import org.opends.server.protocols.ldap.LDAPAttribute;
 import org.opends.server.protocols.ldap.LDAPConstants;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.protocols.ldap.LDAPMessage;
 import org.opends.server.protocols.ldap.ProtocolOp;
@@ -50,6 +49,7 @@
 import org.opends.server.protocols.ldap.SearchResultDoneProtocolOp;
 import org.opends.server.tools.LDAPConnection;
 import org.opends.server.types.DereferencePolicy;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.SearchScope;
 
 
diff --git a/opends/src/server/org/opends/server/api/AccessControlHandler.java b/opends/src/server/org/opends/server/api/AccessControlHandler.java
index eec0fac..71579e5 100644
--- a/opends/src/server/org/opends/server/api/AccessControlHandler.java
+++ b/opends/src/server/org/opends/server/api/AccessControlHandler.java
@@ -32,6 +32,8 @@
 import org.opends.server.types.SearchResultEntry;
 import org.opends.server.types.SearchResultReference;
 import org.opends.server.types.Entry;
+import org.opends.server.types.Operation;
+
 
 
 /**
@@ -43,7 +45,6 @@
  */
 public abstract class AccessControlHandler
 {
-
   /**
    * Indicates whether the provided add operation is allowed based on
    * the access control configuration.  This method should not alter
@@ -231,6 +232,8 @@
   public abstract boolean maySend(SearchOperation searchOperation,
                                SearchResultReference searchReference);
 
+
+
   /**
    * Indicates whether a proxied authorization control is allowed
    * based on the current operation and the new authorization
diff --git a/opends/src/server/org/opends/server/api/AccessControlProvider.java b/opends/src/server/org/opends/server/api/AccessControlProvider.java
index bc219dd..f3573ba 100644
--- a/opends/src/server/org/opends/server/api/AccessControlProvider.java
+++ b/opends/src/server/org/opends/server/api/AccessControlProvider.java
@@ -26,10 +26,14 @@
  */
 package org.opends.server.api;
 
+
+
 import org.opends.server.admin.std.server.AccessControlHandlerCfg;
 import org.opends.server.config.ConfigException;
 import org.opends.server.types.InitializationException;
 
+
+
 /**
  * This class defines an interface for managing the life-cycle of an
  * access control handler. The access control handler configuration
@@ -40,8 +44,8 @@
  *          this connection handler implementation.
  */
 public interface AccessControlProvider
-  <T extends AccessControlHandlerCfg> {
-
+       <T extends AccessControlHandlerCfg>
+{
   /**
    * Initializes the access control handler implementation based on
    * the information in the provided configuration entry.
@@ -56,8 +60,10 @@
    *           If a problem occurs during initialization that is not
    *           related to the server configuration.
    */
-  void initializeAccessControlHandler(T configuration)
-      throws ConfigException, InitializationException;
+  public void initializeAccessControlHandler(T configuration)
+         throws ConfigException, InitializationException;
+
+
 
   /**
    * Performs any necessary finalization for the access control
@@ -65,7 +71,9 @@
    * handler has been deregistered with the server but before it has
    * been unloaded.
    */
-  void finalizeAccessControlHandler();
+  public void finalizeAccessControlHandler();
+
+
 
   /**
    * Get the access control handler responsible for making access
@@ -75,6 +83,5 @@
    * @return Returns the access control handler.
    */
   AccessControlHandler getInstance();
-
 }
 
diff --git a/opends/src/server/org/opends/server/api/AccountStatusNotificationHandler.java b/opends/src/server/org/opends/server/api/AccountStatusNotificationHandler.java
index 4ae6d22..74d3405 100644
--- a/opends/src/server/org/opends/server/api/AccountStatusNotificationHandler.java
+++ b/opends/src/server/org/opends/server/api/AccountStatusNotificationHandler.java
@@ -37,7 +37,6 @@
 
 
 
-
 /**
  * This class defines the set of methods that must be implemented for
  * an account status notification handler.  This handler will be
@@ -48,9 +47,6 @@
  */
 public abstract class AccountStatusNotificationHandler
 {
-
-
-
   /**
    * Initializes this account status notification handler based on the
    * information in the provided configuration entry.
@@ -70,7 +66,7 @@
    */
   public abstract void initializeStatusNotificationHandler(
                             ConfigEntry configEntry)
-       throws ConfigException, InitializationException;
+         throws ConfigException, InitializationException;
 
 
 
diff --git a/opends/src/server/org/opends/server/api/AlertGenerator.java b/opends/src/server/org/opends/server/api/AlertGenerator.java
index 9e395da..6c7682b 100644
--- a/opends/src/server/org/opends/server/api/AlertGenerator.java
+++ b/opends/src/server/org/opends/server/api/AlertGenerator.java
@@ -34,7 +34,6 @@
 
 
 
-
 /**
  * This class defines an interface that may be used to define a set of
  * alert notifications that may be generated by this Directory Server
diff --git a/opends/src/server/org/opends/server/api/ApproximateMatchingRule.java b/opends/src/server/org/opends/server/api/ApproximateMatchingRule.java
index 7909da9..1f0668a 100644
--- a/opends/src/server/org/opends/server/api/ApproximateMatchingRule.java
+++ b/opends/src/server/org/opends/server/api/ApproximateMatchingRule.java
@@ -33,7 +33,6 @@
 
 
 
-
 /**
  * This class defines the set of methods and structures that must be
  * implemented by a Directory Server module that implements a matching
@@ -42,9 +41,6 @@
 public abstract class ApproximateMatchingRule
        extends MatchingRule
 {
-
-
-
   /**
    * Indicates whether the two provided normalized values are
    * approximately equal to each other.
diff --git a/opends/src/server/org/opends/server/api/AttributeSyntax.java b/opends/src/server/org/opends/server/api/AttributeSyntax.java
index 877ac8f..d931794 100644
--- a/opends/src/server/org/opends/server/api/AttributeSyntax.java
+++ b/opends/src/server/org/opends/server/api/AttributeSyntax.java
@@ -35,7 +35,6 @@
 
 
 
-
 /**
  * This class defines the set of methods and structures that must be
  * implemented by a Directory Server module that implements an
@@ -43,9 +42,6 @@
  */
 public abstract class AttributeSyntax
 {
-
-
-
   /**
    * Initializes this attribute syntax based on the information in the
    * provided configuration entry.
diff --git a/opends/src/server/org/opends/server/api/AttributeValueDecoder.java b/opends/src/server/org/opends/server/api/AttributeValueDecoder.java
index 0e4b503..8693c89 100644
--- a/opends/src/server/org/opends/server/api/AttributeValueDecoder.java
+++ b/opends/src/server/org/opends/server/api/AttributeValueDecoder.java
@@ -26,17 +26,20 @@
  */
 package org.opends.server.api;
 
+
+
 import org.opends.server.types.AttributeValue;
 import org.opends.server.types.DirectoryException;
 
+
+
 /**
  * A factory interface for decoding attribute values into objects.
  *
- * @param <T>
- *          Decode the attribute value to an object of this type.
+ * @param  <T>  Decode the attribute value to an object of this type.
  */
-public interface AttributeValueDecoder<T> {
-
+public interface AttributeValueDecoder<T>
+{
   /**
    * Decode the specified attribute value to an object of type T.
    *
@@ -48,3 +51,4 @@
    */
   T decode(AttributeValue value) throws DirectoryException;
 }
+
diff --git a/opends/src/server/org/opends/server/api/CertificateMapper.java b/opends/src/server/org/opends/server/api/CertificateMapper.java
index 85538d2..d28bad2 100644
--- a/opends/src/server/org/opends/server/api/CertificateMapper.java
+++ b/opends/src/server/org/opends/server/api/CertificateMapper.java
@@ -30,8 +30,7 @@
 
 import java.security.cert.Certificate;
 
-import org.opends.server.admin.std.server.
-            CertificateMapperCfg;
+import org.opends.server.admin.std.server.CertificateMapperCfg;
 import org.opends.server.config.ConfigException;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.Entry;
@@ -39,7 +38,6 @@
 
 
 
-
 /**
  * This class defines the set of methods and structures that must be
  * implemented by a Directory Server module that implements the
diff --git a/opends/src/server/org/opends/server/api/ClientConnection.java b/opends/src/server/org/opends/server/api/ClientConnection.java
index 75740c4..5ff8769 100644
--- a/opends/src/server/org/opends/server/api/ClientConnection.java
+++ b/opends/src/server/org/opends/server/api/ClientConnection.java
@@ -38,7 +38,6 @@
 
 import org.opends.server.api.plugin.IntermediateResponsePluginResult;
 import org.opends.server.core.DirectoryServer;
-import org.opends.server.core.Operation;
 import org.opends.server.core.PersistentSearch;
 import org.opends.server.core.PluginConfigManager;
 import org.opends.server.core.SearchOperation;
@@ -48,11 +47,13 @@
 import org.opends.server.types.AuthenticationInfo;
 import org.opends.server.types.CancelRequest;
 import org.opends.server.types.CancelResult;
+import org.opends.server.types.DebugLogLevel;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DisconnectReason;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
 import org.opends.server.types.IntermediateResponse;
+import org.opends.server.types.Operation;
 import org.opends.server.types.Privilege;
 import org.opends.server.types.SearchResultEntry;
 import org.opends.server.types.SearchResultReference;
@@ -60,7 +61,6 @@
 
 import static org.opends.server.config.ConfigConstants.*;
 import static org.opends.server.loggers.debug.DebugLogger.*;
-import org.opends.server.types.DebugLogLevel;
 import static org.opends.server.messages.CoreMessages.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.util.StaticUtils.*;
diff --git a/opends/src/server/org/opends/server/api/DirectoryThread.java b/opends/src/server/org/opends/server/api/DirectoryThread.java
index d4c49d2..d787408 100644
--- a/opends/src/server/org/opends/server/api/DirectoryThread.java
+++ b/opends/src/server/org/opends/server/api/DirectoryThread.java
@@ -28,14 +28,15 @@
 
 
 
+import java.util.Map;
+import java.util.LinkedHashMap;
+
 import org.opends.server.backends.task.Task;
 import org.opends.server.core.DirectoryServer;
 
 import static org.opends.server.util.ServerConstants.*;
 import static org.opends.server.util.StaticUtils.*;
 
-import java.util.Map;
-import java.util.LinkedHashMap;
 
 
 /**
@@ -59,9 +60,6 @@
 public class DirectoryThread
        extends Thread
 {
-
-
-
   // The stack trace taken at the time that this thread was created.
   private StackTraceElement[] creationStackTrace;
 
diff --git a/opends/src/server/org/opends/server/api/EqualityMatchingRule.java b/opends/src/server/org/opends/server/api/EqualityMatchingRule.java
index a6c3ef8..418f30d 100644
--- a/opends/src/server/org/opends/server/api/EqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/api/EqualityMatchingRule.java
@@ -31,13 +31,10 @@
 import org.opends.server.types.AttributeValue;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.ConditionResult;
-
-import static
-    org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static
-    org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import org.opends.server.types.DebugLogLevel;
 
+import static org.opends.server.loggers.debug.DebugLogger.*;
+
 
 
 /**
@@ -48,9 +45,6 @@
 public abstract class EqualityMatchingRule
        extends MatchingRule
 {
-
-
-
   /**
    * Indicates whether the two provided normalized values are equal to
    * each other.
diff --git a/opends/src/server/org/opends/server/api/ExtendedOperationHandler.java b/opends/src/server/org/opends/server/api/ExtendedOperationHandler.java
index ae48759..34a6baf 100644
--- a/opends/src/server/org/opends/server/api/ExtendedOperationHandler.java
+++ b/opends/src/server/org/opends/server/api/ExtendedOperationHandler.java
@@ -50,14 +50,14 @@
 public abstract class
      ExtendedOperationHandler<T extends ExtendedOperationHandlerCfg>
 {
-
-
   /**
    * The default set of supported control OIDs for this extended
    * operation.
    */
   protected Set<String> supportedControlOIDs = new HashSet<String>(0);
 
+
+
   /**
    * The default set of supported feature OIDs for this extended
    * operation.
@@ -85,8 +85,7 @@
    *                                   not related to the server
    *                                   configuration.
    */
-  public abstract void
-       initializeExtendedOperationHandler(T config)
+  public abstract void initializeExtendedOperationHandler(T config)
          throws ConfigException, InitializationException;
 
 
diff --git a/opends/src/server/org/opends/server/api/Group.java b/opends/src/server/org/opends/server/api/Group.java
index 25e9e38..1263c11 100644
--- a/opends/src/server/org/opends/server/api/Group.java
+++ b/opends/src/server/org/opends/server/api/Group.java
@@ -42,7 +42,6 @@
 
 
 
-
 /**
  * This class defines the set of methods that must be implemented by a
  * Directory Server group.  It is expected that there will be a number
diff --git a/opends/src/server/org/opends/server/api/InvokableComponent.java b/opends/src/server/org/opends/server/api/InvokableComponent.java
index 5e14539..be59543 100644
--- a/opends/src/server/org/opends/server/api/InvokableComponent.java
+++ b/opends/src/server/org/opends/server/api/InvokableComponent.java
@@ -35,7 +35,6 @@
 
 
 
-
 /**
  * This class defines an interface that may be implemented by
  * Directory Server components that have methods that may be invoked
diff --git a/opends/src/server/org/opends/server/api/LogPublisher.java b/opends/src/server/org/opends/server/api/LogPublisher.java
index 122d893..856f371 100644
--- a/opends/src/server/org/opends/server/api/LogPublisher.java
+++ b/opends/src/server/org/opends/server/api/LogPublisher.java
@@ -26,9 +26,13 @@
  */
 package org.opends.server.api;
 
+
+
 import org.opends.server.loggers.LogRecord;
 import org.opends.server.loggers.LoggerErrorHandler;
 
+
+
 /**
  * LogPublishers are reponsible for distributing logged messages from
  * the Logger object to a destination.
@@ -47,6 +51,8 @@
    */
   public void publish(LogRecord record, LoggerErrorHandler handler);
 
+
+
   /**
    * Releases any resources and prepare for close.
    */
diff --git a/opends/src/server/org/opends/server/api/MatchingRule.java b/opends/src/server/org/opends/server/api/MatchingRule.java
index 294c030..53c9f22 100644
--- a/opends/src/server/org/opends/server/api/MatchingRule.java
+++ b/opends/src/server/org/opends/server/api/MatchingRule.java
@@ -37,7 +37,6 @@
 
 
 
-
 /**
  * This class defines the set of methods and structures that must be
  * implemented by a Directory Server module that implements a matching
@@ -45,9 +44,6 @@
  */
 public abstract class MatchingRule
 {
-
-
-
   /**
    * Initializes this matching rule based on the information in the
    * provided configuration entry.
diff --git a/opends/src/server/org/opends/server/api/MonitorProvider.java b/opends/src/server/org/opends/server/api/MonitorProvider.java
index 734cdbc..5096263 100644
--- a/opends/src/server/org/opends/server/api/MonitorProvider.java
+++ b/opends/src/server/org/opends/server/api/MonitorProvider.java
@@ -33,15 +33,12 @@
 import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
 import org.opends.server.types.Attribute;
+import org.opends.server.types.DebugLogLevel;
 import org.opends.server.types.DirectoryConfig;
 import org.opends.server.types.InitializationException;
 import org.opends.server.types.ObjectClass;
 
-import static
-    org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static
-    org.opends.server.loggers.debug.DebugLogger.debugEnabled;
-import org.opends.server.types.DebugLogLevel;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.util.ServerConstants.*;
 
 
@@ -55,9 +52,6 @@
 public abstract class MonitorProvider
        extends DirectoryThread
 {
-
-
-
   // Indicates whether a request has been received to stop running.
   private boolean stopRequested;
 
diff --git a/opends/src/server/org/opends/server/api/OrderingMatchingRule.java b/opends/src/server/org/opends/server/api/OrderingMatchingRule.java
index 9c53aa5..c303b38 100644
--- a/opends/src/server/org/opends/server/api/OrderingMatchingRule.java
+++ b/opends/src/server/org/opends/server/api/OrderingMatchingRule.java
@@ -36,7 +36,6 @@
 
 
 
-
 /**
  * This class defines the set of methods and structures that must be
  * implemented by a Directory Server module that implements a matching
@@ -47,9 +46,6 @@
        extends MatchingRule
        implements Comparator<byte[]>, Serializable
 {
-
-
-
   /**
    * The serial version identifier required to satisfy the compiler
    * because this class implements the
diff --git a/opends/src/server/org/opends/server/api/PasswordGenerator.java b/opends/src/server/org/opends/server/api/PasswordGenerator.java
index ed15e83..74d445a 100644
--- a/opends/src/server/org/opends/server/api/PasswordGenerator.java
+++ b/opends/src/server/org/opends/server/api/PasswordGenerator.java
@@ -37,7 +37,6 @@
 
 
 
-
 /**
  * This class defines a set of methods and structures that must be
  * implemented by a Directory Server module that may be used to
@@ -52,9 +51,6 @@
 public abstract class PasswordGenerator
        <T extends PasswordGeneratorCfg>
 {
-
-
-
   /**
    * Initializes this password generator based on the information in
    * the provided configuration entry.
diff --git a/opends/src/server/org/opends/server/api/PasswordStorageScheme.java b/opends/src/server/org/opends/server/api/PasswordStorageScheme.java
index ff950c5..fbaa4f3 100644
--- a/opends/src/server/org/opends/server/api/PasswordStorageScheme.java
+++ b/opends/src/server/org/opends/server/api/PasswordStorageScheme.java
@@ -36,7 +36,6 @@
 
 
 
-
 /**
  * This class defines the set of methods and structures that must be
  * implemented by a Directory Server module that implements a password
@@ -45,9 +44,6 @@
  */
 public abstract class PasswordStorageScheme
 {
-
-
-
   /**
    * Initializes this password storage scheme handler based on the
    * information in the provided configuration entry.  It should also
diff --git a/opends/src/server/org/opends/server/api/PasswordValidator.java b/opends/src/server/org/opends/server/api/PasswordValidator.java
index 9e0b255..b41fa82 100644
--- a/opends/src/server/org/opends/server/api/PasswordValidator.java
+++ b/opends/src/server/org/opends/server/api/PasswordValidator.java
@@ -30,13 +30,12 @@
 
 import java.util.Set;
 
-import org.opends.server.admin.std.server.
-            PasswordValidatorCfg;
+import org.opends.server.admin.std.server.PasswordValidatorCfg;
 import org.opends.server.config.ConfigException;
-import org.opends.server.core.Operation;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.Entry;
 import org.opends.server.types.InitializationException;
+import org.opends.server.types.Operation;
 
 
 
diff --git a/opends/src/server/org/opends/server/api/SASLMechanismHandler.java b/opends/src/server/org/opends/server/api/SASLMechanismHandler.java
index b01e923..bac65ab 100644
--- a/opends/src/server/org/opends/server/api/SASLMechanismHandler.java
+++ b/opends/src/server/org/opends/server/api/SASLMechanismHandler.java
@@ -28,8 +28,7 @@
 
 
 
-import org.opends.server.admin.std.server.
-            SASLMechanismHandlerCfg;
+import org.opends.server.admin.std.server.SASLMechanismHandlerCfg;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.BindOperation;
 import org.opends.server.types.InitializationException;
diff --git a/opends/src/server/org/opends/server/api/SubstringMatchingRule.java b/opends/src/server/org/opends/server/api/SubstringMatchingRule.java
index 3848c87..5df9de9 100644
--- a/opends/src/server/org/opends/server/api/SubstringMatchingRule.java
+++ b/opends/src/server/org/opends/server/api/SubstringMatchingRule.java
@@ -36,7 +36,6 @@
 
 
 
-
 /**
  * This class defines the set of methods and structures that must be
  * implemented by a Directory Server module that implements a matching
@@ -45,9 +44,6 @@
 public abstract class SubstringMatchingRule
        extends MatchingRule
 {
-
-
-
   /**
    * Normalizes the provided value fragment into a form that can be
    * used to efficiently compare values.
diff --git a/opends/src/server/org/opends/server/api/SubtreeSpecification.java b/opends/src/server/org/opends/server/api/SubtreeSpecification.java
index 0679061..cdd1884 100644
--- a/opends/src/server/org/opends/server/api/SubtreeSpecification.java
+++ b/opends/src/server/org/opends/server/api/SubtreeSpecification.java
@@ -26,20 +26,27 @@
  */
 package org.opends.server.api;
 
+
+
 import org.opends.server.types.Entry;
 
+
+
 /**
  * Generic subtree specification interface.
  */
-public abstract class SubtreeSpecification {
-
+public abstract class SubtreeSpecification
+{
   /**
    * Create a new subtree specification.
    */
-  protected SubtreeSpecification() {
+  protected SubtreeSpecification()
+  {
     // No implementation required.
   }
 
+
+
   /**
    * Determine if an entry is within the scope of the subtree
    * specification.
@@ -52,18 +59,33 @@
    */
   public abstract boolean isWithinScope(Entry entry);
 
+
+
   /**
-   * {@inheritDoc}
+   * Indicates whether the provided object is logically equal to this
+   * subtree specification object.
+   *
+   * @param  obj  The object for which to make the determination.
+   *
+   * @return  {@code true} if the provided object is logically equal
+   *          to this subtree specification object, or {@code false}
+   *          if not.
    */
   @Override
   public abstract boolean equals(Object obj);
 
+
+
   /**
-   * {@inheritDoc}
+   * Retrieves the hash code for this subtree specification object.
+   *
+   * @return  The hash code for this subtree specification object.
    */
   @Override
   public abstract int hashCode();
 
+
+
   /**
    * Append the string representation of the subtree specification to
    * the provided string builder.
@@ -74,12 +96,20 @@
    */
   public abstract StringBuilder toString(StringBuilder builder);
 
+
+
   /**
-   * {@inheritDoc}
+   * Retrieves a string representation of this subtree specification
+   * object.
+   *
+   * @return  A string representation of this subtree specification
+   *          object.
    */
   @Override
-  public final String toString() {
+  public final String toString()
+  {
     StringBuilder builder = new StringBuilder();
     return toString(builder).toString();
   }
 }
+
diff --git a/opends/src/server/org/opends/server/api/SubtreeSpecificationSet.java b/opends/src/server/org/opends/server/api/SubtreeSpecificationSet.java
index cd78429..3e55a60 100644
--- a/opends/src/server/org/opends/server/api/SubtreeSpecificationSet.java
+++ b/opends/src/server/org/opends/server/api/SubtreeSpecificationSet.java
@@ -26,6 +26,8 @@
  */
 package org.opends.server.api;
 
+
+
 import java.util.AbstractSet;
 import java.util.Collection;
 import java.util.HashSet;
@@ -33,56 +35,65 @@
 
 import org.opends.server.types.Entry;
 
+
+
 /**
- * This class implements the <code>Set</code> interface for
+ * This class implements the {@code Set} interface for
  * {@link org.opends.server.api.SubtreeSpecification}s.
  * <p>
- * It is backed by a <code>HashSet</code> but provides additional
- * functionality, {@link #isWithinScope(Entry)}, for
- * determining whether or not an entry is within the scope of one or
- * more contained <code>SubtreeSpecification</code>s.
+ * It is backed by a {@code HashSet} but provides additional
+ * functionality, {@link #isWithinScope(Entry)}, for determining
+ * whether or not an entry is within the scope of one or more
+ * contained {@code SubtreeSpecification}s.
  */
-public final class SubtreeSpecificationSet extends
-    AbstractSet<SubtreeSpecification> {
-
+public final class SubtreeSpecificationSet
+       extends AbstractSet<SubtreeSpecification>
+{
   // Underlying implementation is simply a set.
   private HashSet<SubtreeSpecification> pimpl;
 
+
+
   /**
    * Constructs a new empty subtree specification set.
    */
-  public SubtreeSpecificationSet() {
-
+  public SubtreeSpecificationSet()
+  {
     this.pimpl = new HashSet<SubtreeSpecification>();
   }
 
+
+
   /**
    * Constructs a new subtree specification set containing the
    * elements in the specified collection.
    *
-   * @param c
-   *          The subtree specification collection whose elements are
-   *          to be placed into this set.
+   * @param  c  The subtree specification collection whose elements
+   *            are to be placed into this set.
    */
   public SubtreeSpecificationSet(
-      Collection<? extends SubtreeSpecification> c) {
-
+              Collection<? extends SubtreeSpecification> c)
+  {
     this.pimpl = new HashSet<SubtreeSpecification>(c);
   }
 
-  /**
-   * Returns <code>true</code> if the specified entry is within the
-   * scope of a subtree specifications contained in the set.
-   *
-   * @param entry
-   *          The entry to be checked for containment.
-   * @return Returns <code>true</code> if the set contains the
-   *         specified entry.
-   */
-  public boolean isWithinScope(Entry entry) {
 
-    for (SubtreeSpecification subtreeSpecification : pimpl) {
-      if (subtreeSpecification.isWithinScope(entry)) {
+
+  /**
+   * Returns {@code true} if the specified entry is within the scope
+   * of a subtree specifications contained in the set.
+   *
+   * @param  entry  The entry to be checked for containment.
+   *
+   * @return  Returns {@code true} if the set contains the specified
+   *          entry.
+   */
+  public boolean isWithinScope(Entry entry)
+  {
+    for (SubtreeSpecification subtreeSpecification : pimpl)
+    {
+      if (subtreeSpecification.isWithinScope(entry))
+      {
         return true;
       }
     }
@@ -90,39 +101,65 @@
     return false;
   }
 
+
+
   /**
-   * {@inheritDoc}
+   * Adds the provided subtree specification object to this set.
+   *
+   * @param  e  The subtree specification object to be added.
+   *
+   * @return  {@code true} if the element was added to the set, or
+   *          {@code false} if the element was already contained in
+   *          the set.
    */
   @Override
-  public boolean add(SubtreeSpecification e) {
-
+  public boolean add(SubtreeSpecification e)
+  {
     return pimpl.add(e);
   }
 
+
+
   /**
-   * {@inheritDoc}
+   * Retrieves an iterator that may be used to step through the values
+   * in this set.
+   *
+   * @return  An iterator that may be used to step through the values
+   *          in this set.
    */
   @Override
-  public Iterator<SubtreeSpecification> iterator() {
-
+  public Iterator<SubtreeSpecification> iterator()
+  {
     return pimpl.iterator();
   }
 
+
+
   /**
-   * {@inheritDoc}
+   * Indicates whether this set contains the provided object.
+   *
+   * @param  o  The object for which to make the determination.
+   *
+   * @return  {@code true} if this set contains the provided object,
+   *          or {@code false} if not.
    */
   @Override
-  public boolean contains(Object o) {
-
+  public boolean contains(Object o)
+  {
     return pimpl.contains(o);
   }
 
+
+
   /**
-   * {@inheritDoc}
+   * Retrieves the number of elements contained in this set.
+   *
+   * @return  The number of elements contained in this set.
    */
   @Override
-  public int size() {
-
+  public int size()
+  {
     return pimpl.size();
   }
 }
+
diff --git a/opends/src/server/org/opends/server/api/SynchronizationProvider.java b/opends/src/server/org/opends/server/api/SynchronizationProvider.java
index 063857f..2fb1657 100644
--- a/opends/src/server/org/opends/server/api/SynchronizationProvider.java
+++ b/opends/src/server/org/opends/server/api/SynchronizationProvider.java
@@ -43,7 +43,6 @@
 
 
 
-
 /**
  * This class defines the set of methods and structures that are
  * available for use in a Directory Server synchronization provider.
@@ -55,11 +54,8 @@
  * @param <T> the configuration for the synchronization provider.
  */
 public abstract class
-  SynchronizationProvider<T extends SynchronizationProviderCfg>
+       SynchronizationProvider<T extends SynchronizationProviderCfg>
 {
-
-
-
   /**
    * Performs any initialization that might be necessary for this
    * synchronization provider.
diff --git a/opends/src/server/org/opends/server/api/TrustManagerProvider.java b/opends/src/server/org/opends/server/api/TrustManagerProvider.java
index eab823a..fb53ed2 100644
--- a/opends/src/server/org/opends/server/api/TrustManagerProvider.java
+++ b/opends/src/server/org/opends/server/api/TrustManagerProvider.java
@@ -39,8 +39,8 @@
 
 /**
  * This class defines an API that may be used to obtain a set of
- * <CODE>javax.net.ssl.TrustManager</CODE> objects for use when
- * performing SSL communication.
+ * {@code javax.net.ssl.TrustManager} objects for use when performing
+ * SSL/StartTLS negotiation.
  */
 public abstract class TrustManagerProvider
 {
@@ -77,12 +77,11 @@
 
 
   /**
-   * Retrieves a set of <CODE>TrustManager</CODE> objects that may be
-   * used for interactions requiring access to a trust manager.
+   * Retrieves a set of {@code TrustManager} objects that may be used
+   * for interactions requiring access to a trust manager.
    *
-   * @return  A set of <CODE>TrustManager</CODE> objects that may be
-   *          used for interactions requiring access to a trust
-   *          manager.
+   * @return  A set of {@code TrustManager} objects that may be used
+   *          for interactions requiring access to a trust manager.
    *
    * @throws  DirectoryException  If a problem occurs while attempting
    *                              to obtain the set of trust managers.
diff --git a/opends/src/server/org/opends/server/api/VirtualAttributeProvider.java b/opends/src/server/org/opends/server/api/VirtualAttributeProvider.java
index bb25ed4..6e15f93 100644
--- a/opends/src/server/org/opends/server/api/VirtualAttributeProvider.java
+++ b/opends/src/server/org/opends/server/api/VirtualAttributeProvider.java
@@ -236,10 +236,10 @@
    * @param  subFinal    The subFinal component to use in the
    *                     determination.
    *
-   * @return  <CODE>UNDEFINED</CODE> if this attribute does not have a
-   *          substring matching rule, <CODE>TRUE</CODE> if at least
-   *          one value matches the provided substring, or
-   *          <CODE>FALSE</CODE> otherwise.
+   * @return  {@code UNDEFINED} if this attribute does not have a
+   *          substring matching rule, {@code TRUE} if at least one
+   *          value matches the provided substring, or {@code FALSE}
+   *          otherwise.
    */
   public ConditionResult matchesSubstring(Entry entry,
                                           VirtualAttributeRule rule,
@@ -609,8 +609,8 @@
    * @param  searchOperation  The search operation for which to make
    *                          the determination.
    *
-   * @return  <CODE>true</CODE> if this attribute may be included in
-   *          search filters, or <CODE>false</CODE> if not.
+   * @return  {@code true} if this attribute may be included in search
+   *          filters, or {@code false} if not.
    */
   public abstract boolean isSearchable(VirtualAttributeRule rule,
                                        SearchOperation
@@ -622,7 +622,7 @@
    * Processes the provided search operation in which the search
    * criteria includes an operation targeted at this virtual
    * attribute.  This method should only be called if
-   * <CODE>isSearchable</CODE> returns true and it is not possible to
+   * {@code isSearchable} returns true and it is not possible to
    * construct a manageable candidate list by processing other
    * elements of the search criteria.
    *
diff --git a/opends/src/server/org/opends/server/api/WorkQueue.java b/opends/src/server/org/opends/server/api/WorkQueue.java
index 2d5d528..d28a6f4 100644
--- a/opends/src/server/org/opends/server/api/WorkQueue.java
+++ b/opends/src/server/org/opends/server/api/WorkQueue.java
@@ -30,10 +30,9 @@
 
 import org.opends.server.config.ConfigEntry;
 import org.opends.server.config.ConfigException;
-import org.opends.server.core.Operation;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.InitializationException;
-
+import org.opends.server.types.Operation;
 
 
 
@@ -49,9 +48,6 @@
  */
 public abstract class WorkQueue
 {
-
-
-
   /**
    * Initializes this work queue based on the information in the
    * provided configuration entry.
diff --git a/opends/src/server/org/opends/server/api/plugin/IntermediateResponsePluginResult.java b/opends/src/server/org/opends/server/api/plugin/IntermediateResponsePluginResult.java
index 61ed347..4564159 100644
--- a/opends/src/server/org/opends/server/api/plugin/IntermediateResponsePluginResult.java
+++ b/opends/src/server/org/opends/server/api/plugin/IntermediateResponsePluginResult.java
@@ -28,18 +28,12 @@
 
 
 
-
-
-
 /**
  * This class defines a data structure that holds information about
  * the result of processing by an intermediate response plugin.
  */
 public class IntermediateResponsePluginResult
 {
-
-
-
   /**
    * An intermediate response plugin result instance that indicates
    * all processing was successful.
diff --git a/opends/src/server/org/opends/server/api/plugin/LDIFPluginResult.java b/opends/src/server/org/opends/server/api/plugin/LDIFPluginResult.java
index 2dd4ee3..f94972e 100644
--- a/opends/src/server/org/opends/server/api/plugin/LDIFPluginResult.java
+++ b/opends/src/server/org/opends/server/api/plugin/LDIFPluginResult.java
@@ -28,18 +28,12 @@
 
 
 
-
-
-
 /**
  * This class defines a data structure that holds information about
  * the result of processing an LDIF import or export plugin.
  */
 public class LDIFPluginResult
 {
-
-
-
   /**
    * An LDIF plugin result instance that indicates all processing was
    * successful.
diff --git a/opends/src/server/org/opends/server/api/plugin/PostConnectPluginResult.java b/opends/src/server/org/opends/server/api/plugin/PostConnectPluginResult.java
index d8cc00c..9944c21 100644
--- a/opends/src/server/org/opends/server/api/plugin/PostConnectPluginResult.java
+++ b/opends/src/server/org/opends/server/api/plugin/PostConnectPluginResult.java
@@ -28,18 +28,12 @@
 
 
 
-
-
-
 /**
  * This class defines a data structure that holds information about
  * the result of processing by a post-connect plugin.
  */
 public class PostConnectPluginResult
 {
-
-
-
   /**
    * A post-connect plugin result instance that indicates all
    * processing was  successful.
diff --git a/opends/src/server/org/opends/server/api/plugin/PostDisconnectPluginResult.java b/opends/src/server/org/opends/server/api/plugin/PostDisconnectPluginResult.java
index 8aad2a8..05cb867 100644
--- a/opends/src/server/org/opends/server/api/plugin/PostDisconnectPluginResult.java
+++ b/opends/src/server/org/opends/server/api/plugin/PostDisconnectPluginResult.java
@@ -28,18 +28,12 @@
 
 
 
-
-
-
 /**
  * This class defines a data structure that holds information about
  * the result of processing by a post-disconnect plugin.
  */
 public class PostDisconnectPluginResult
 {
-
-
-
   /**
    * A post-disconnect plugin result instance that indicates all
    * processing was successful.
diff --git a/opends/src/server/org/opends/server/api/plugin/PostOperationPluginResult.java b/opends/src/server/org/opends/server/api/plugin/PostOperationPluginResult.java
index 3d45391..465011e 100644
--- a/opends/src/server/org/opends/server/api/plugin/PostOperationPluginResult.java
+++ b/opends/src/server/org/opends/server/api/plugin/PostOperationPluginResult.java
@@ -28,18 +28,12 @@
 
 
 
-
-
-
 /**
  * This class defines a data structure that holds information about
  * the result of processing by a post-operation plugin.
  */
 public class PostOperationPluginResult
 {
-
-
-
   /**
    * A post-operation plugin result instance that indicates all
    * processing was  successful.
diff --git a/opends/src/server/org/opends/server/api/plugin/PostResponsePluginResult.java b/opends/src/server/org/opends/server/api/plugin/PostResponsePluginResult.java
index 12f443b..f824e71 100644
--- a/opends/src/server/org/opends/server/api/plugin/PostResponsePluginResult.java
+++ b/opends/src/server/org/opends/server/api/plugin/PostResponsePluginResult.java
@@ -28,18 +28,12 @@
 
 
 
-
-
-
 /**
  * This class defines a data structure that holds information about
  * the result of processing by a post-response plugin.
  */
 public class PostResponsePluginResult
 {
-
-
-
   /**
    * A post-response plugin result instance that indicates all
    * processing was successful.
diff --git a/opends/src/server/org/opends/server/api/plugin/PreOperationPluginResult.java b/opends/src/server/org/opends/server/api/plugin/PreOperationPluginResult.java
index cca30a4..7eab0f0 100644
--- a/opends/src/server/org/opends/server/api/plugin/PreOperationPluginResult.java
+++ b/opends/src/server/org/opends/server/api/plugin/PreOperationPluginResult.java
@@ -28,18 +28,12 @@
 
 
 
-
-
-
 /**
  * This class defines a data structure that holds information about
  * the result of processing by a pre-operation plugin.
  */
 public class PreOperationPluginResult
 {
-
-
-
   /**
    * A pre-operation plugin result instance that indicates all
    * processing was successful.
diff --git a/opends/src/server/org/opends/server/api/plugin/PreParsePluginResult.java b/opends/src/server/org/opends/server/api/plugin/PreParsePluginResult.java
index 906ae0b..5a2b289 100644
--- a/opends/src/server/org/opends/server/api/plugin/PreParsePluginResult.java
+++ b/opends/src/server/org/opends/server/api/plugin/PreParsePluginResult.java
@@ -28,18 +28,12 @@
 
 
 
-
-
-
 /**
  * This class defines a data structure that holds information about
  * the result of processing by a pre-parse plugin.
  */
 public class PreParsePluginResult
 {
-
-
-
   /**
    * A pre-parse plugin result instance that indicates all processing
    * was successful.
diff --git a/opends/src/server/org/opends/server/api/plugin/SearchEntryPluginResult.java b/opends/src/server/org/opends/server/api/plugin/SearchEntryPluginResult.java
index 2cee9f0..93a2666 100644
--- a/opends/src/server/org/opends/server/api/plugin/SearchEntryPluginResult.java
+++ b/opends/src/server/org/opends/server/api/plugin/SearchEntryPluginResult.java
@@ -28,18 +28,12 @@
 
 
 
-
-
-
 /**
  * This class defines a data structure that holds information about
  * the result of processing by a search result entry plugin.
  */
 public class SearchEntryPluginResult
 {
-
-
-
   /**
    * A search entry plugin result instance that indicates all
    * processing was successful.
diff --git a/opends/src/server/org/opends/server/api/plugin/SearchReferencePluginResult.java b/opends/src/server/org/opends/server/api/plugin/SearchReferencePluginResult.java
index 8c35d14..7fb2349 100644
--- a/opends/src/server/org/opends/server/api/plugin/SearchReferencePluginResult.java
+++ b/opends/src/server/org/opends/server/api/plugin/SearchReferencePluginResult.java
@@ -28,18 +28,12 @@
 
 
 
-
-
-
 /**
  * This class defines a data structure that holds information about
  * the result of processing by a search result reference plugin.
  */
 public class SearchReferencePluginResult
 {
-
-
-
   /**
    * A search reference plugin result instance that indicates all
    * processing was successful.
diff --git a/opends/src/server/org/opends/server/api/plugin/StartupPluginResult.java b/opends/src/server/org/opends/server/api/plugin/StartupPluginResult.java
index 19b3993..477a7eb 100644
--- a/opends/src/server/org/opends/server/api/plugin/StartupPluginResult.java
+++ b/opends/src/server/org/opends/server/api/plugin/StartupPluginResult.java
@@ -28,9 +28,6 @@
 
 
 
-
-
-
 /**
  * This class defines a data structure that holds information about
  * the result of processing by a plugin invoked during the Directory
@@ -38,9 +35,6 @@
  */
 public class StartupPluginResult
 {
-
-
-
   /**
    * A startup plugin result instance that indicates all processing
    * was successful.
diff --git a/opends/src/server/org/opends/server/authorization/dseecompat/AciContainer.java b/opends/src/server/org/opends/server/authorization/dseecompat/AciContainer.java
index c4ac14c..2602242 100644
--- a/opends/src/server/org/opends/server/authorization/dseecompat/AciContainer.java
+++ b/opends/src/server/org/opends/server/authorization/dseecompat/AciContainer.java
@@ -32,8 +32,8 @@
 import org.opends.server.api.Group;
 import org.opends.server.api.ConnectionSecurityProvider;
 import org.opends.server.core.AddOperation;
-import org.opends.server.core.Operation;
 import org.opends.server.extensions.TLSConnectionSecurityProvider;
+import org.opends.server.types.Operation;
 import java.net.InetAddress;
 import java.util.LinkedList;
 import static org.opends.server.authorization.dseecompat.AciHandler.*;
diff --git a/opends/src/server/org/opends/server/authorization/dseecompat/DNS.java b/opends/src/server/org/opends/server/authorization/dseecompat/DNS.java
index 5f6dcab..d67e832 100644
--- a/opends/src/server/org/opends/server/authorization/dseecompat/DNS.java
+++ b/opends/src/server/org/opends/server/authorization/dseecompat/DNS.java
@@ -164,7 +164,7 @@
 
                 int msgID = MSGID_ACI_ERROR_CHECKING_CANONICAL_HOSTNAME;
                 String message = getMessage(msgID, hn, expr,
-                                            stackTraceToSingleLineString(e));
+                                            getExceptionMessage(e));
                 logError(ErrorLogCategory.ACCESS_CONTROL,
                          ErrorLogSeverity.INFORMATIONAL, message, msgID);
               }
diff --git a/opends/src/server/org/opends/server/backends/BackupBackend.java b/opends/src/server/org/opends/server/backends/BackupBackend.java
index 9ef282f..e7dadb6 100644
--- a/opends/src/server/org/opends/server/backends/BackupBackend.java
+++ b/opends/src/server/org/opends/server/backends/BackupBackend.java
@@ -158,7 +158,7 @@
       }
 
       int msgID = MSGID_BACKUP_CANNOT_DECODE_BACKUP_ROOT_DN;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -233,7 +233,7 @@
 
       int msgID = MSGID_BACKEND_CANNOT_REGISTER_BASEDN;
       String message = getMessage(msgID, backupBaseDN.toString(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
   }
@@ -452,7 +452,7 @@
       }
 
       int msgID = MSGID_BACKUP_ERROR_GETTING_BACKUP_DIRECTORY;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID);
     }
@@ -574,7 +574,7 @@
       }
 
       int msgID = MSGID_BACKUP_ERROR_GETTING_BACKUP_DIRECTORY;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID);
     }
diff --git a/opends/src/server/org/opends/server/backends/MemoryBackend.java b/opends/src/server/org/opends/server/backends/MemoryBackend.java
index dc97a0d..9eec47c 100644
--- a/opends/src/server/org/opends/server/backends/MemoryBackend.java
+++ b/opends/src/server/org/opends/server/backends/MemoryBackend.java
@@ -186,7 +186,7 @@
 
         int msgID = MSGID_BACKEND_CANNOT_REGISTER_BASEDN;
         String message = getMessage(msgID, dn.toString(),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new InitializationException(msgID, message, e);
       }
     }
diff --git a/opends/src/server/org/opends/server/backends/MonitorBackend.java b/opends/src/server/org/opends/server/backends/MonitorBackend.java
index d7c50bf..a9d414d 100644
--- a/opends/src/server/org/opends/server/backends/MonitorBackend.java
+++ b/opends/src/server/org/opends/server/backends/MonitorBackend.java
@@ -194,7 +194,7 @@
       }
 
       int msgID = MSGID_MONITOR_CANNOT_DECODE_MONITOR_ROOT_DN;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -236,7 +236,7 @@
 
       int msgID = MSGID_BACKEND_CANNOT_REGISTER_BASEDN;
       String message = getMessage(msgID, baseMonitorDN.toString(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
   }
diff --git a/opends/src/server/org/opends/server/backends/SchemaBackend.java b/opends/src/server/org/opends/server/backends/SchemaBackend.java
index ac7bbc4..1bb9ff3 100644
--- a/opends/src/server/org/opends/server/backends/SchemaBackend.java
+++ b/opends/src/server/org/opends/server/backends/SchemaBackend.java
@@ -359,7 +359,7 @@
 
         int msgID = MSGID_BACKEND_CANNOT_REGISTER_BASEDN;
         String message = getMessage(msgID, baseDNs[i].toString(),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new InitializationException(msgID, message, e);
       }
     }
@@ -487,7 +487,7 @@
       }
 
       int msgID = MSGID_SCHEMA_ERROR_DETERMINING_SCHEMA_CHANGES;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       logError(ErrorLogCategory.SCHEMA, ErrorLogSeverity.SEVERE_ERROR, message,
                msgID);
     }
@@ -1503,7 +1503,7 @@
       }
 
       int    msgID   = MSGID_SCHEMA_MODIFY_CANNOT_WRITE_NEW_SCHEMA;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
     }
@@ -3770,14 +3770,14 @@
       if (allCleaned)
       {
         int    msgID   = MSGID_SCHEMA_MODIFY_CANNOT_WRITE_ORIG_FILES_CLEANED;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                      message, msgID, e);
       }
       else
       {
         int msgID = MSGID_SCHEMA_MODIFY_CANNOT_WRITE_ORIG_FILES_NOT_CLEANED;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
 
         DirectoryServer.sendAlertNotification(this,
                              ALERT_TYPE_CANNOT_COPY_SCHEMA_FILES, msgID,
@@ -3855,14 +3855,14 @@
       if (allRestored)
       {
         int    msgID   = MSGID_SCHEMA_MODIFY_CANNOT_WRITE_NEW_FILES_RESTORED;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                      message, msgID, e);
       }
       else
       {
         int msgID = MSGID_SCHEMA_MODIFY_CANNOT_WRITE_NEW_FILES_NOT_RESTORED;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
 
         DirectoryServer.sendAlertNotification(this,
                              ALERT_TYPE_CANNOT_WRITE_NEW_SCHEMA_FILES, msgID,
@@ -4402,7 +4402,7 @@
       int    msgID   = MSGID_SCHEMA_BACKUP_CANNOT_CREATE_ARCHIVE_FILE;
       String message = getMessage(msgID, String.valueOf(filename),
                                   backupDirectory.getPath(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
     }
@@ -4473,8 +4473,7 @@
       }
 
       msgID   = MSGID_SCHEMA_BACKUP_CANNOT_LIST_SCHEMA_FILES;
-      message = getMessage(msgID, schemaDirPath,
-                           stackTraceToSingleLineString(e));
+      message = getMessage(msgID, schemaDirPath, getExceptionMessage(e));
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
     }
@@ -5220,7 +5219,7 @@
 
       int msgID = MSGID_SCHEMA_CANNOT_DETERMINE_BASE_DN;
       messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              stackTraceToSingleLineString(e)));
+                              getExceptionMessage(e)));
       resultCode = DirectoryServer.getServerErrorResultCode();
       newBaseDNs = null;
     }
@@ -5310,7 +5309,7 @@
 
           int msgID = MSGID_SCHEMA_CANNOT_DEREGISTER_BASE_DN;
           messages.add(getMessage(msgID, String.valueOf(dn),
-                                  stackTraceToSingleLineString(e)));
+                                  getExceptionMessage(e)));
           resultCode = DirectoryServer.getServerErrorResultCode();
         }
       }
@@ -5333,7 +5332,7 @@
 
           int msgID = MSGID_SCHEMA_CANNOT_REGISTER_BASE_DN;
           messages.add(getMessage(msgID, String.valueOf(dn),
-                                  stackTraceToSingleLineString(e)));
+                                  getExceptionMessage(e)));
           resultCode = DirectoryServer.getServerErrorResultCode();
         }
       }
diff --git a/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java b/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java
index f769462..9a98c8c 100644
--- a/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java
+++ b/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java
@@ -36,10 +36,8 @@
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ModifyOperation;
 import org.opends.server.core.ModifyDNOperation;
-import org.opends.server.core.Operation;
 import org.opends.server.core.SearchOperation;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.controls.PagedResultsControl;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
@@ -50,8 +48,10 @@
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.LockType;
 import org.opends.server.types.Modification;
+import org.opends.server.types.Operation;
 import org.opends.server.types.RDN;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchScope;
diff --git a/opends/src/server/org/opends/server/backends/jeb/JebFormat.java b/opends/src/server/org/opends/server/backends/jeb/JebFormat.java
index 68515a6..7352ee6 100644
--- a/opends/src/server/org/opends/server/backends/jeb/JebFormat.java
+++ b/opends/src/server/org/opends/server/backends/jeb/JebFormat.java
@@ -33,10 +33,10 @@
 import org.opends.server.protocols.asn1.ASN1Integer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.types.CryptoManager;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.Entry;
+import org.opends.server.types.LDAPException;
 
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import static org.opends.server.loggers.debug.DebugLogger.debugInfo;
diff --git a/opends/src/server/org/opends/server/backends/task/RecurringTask.java b/opends/src/server/org/opends/server/backends/task/RecurringTask.java
index 5545228..55d6452 100644
--- a/opends/src/server/org/opends/server/backends/task/RecurringTask.java
+++ b/opends/src/server/org/opends/server/backends/task/RecurringTask.java
@@ -218,7 +218,7 @@
       int    msgID   = MSGID_RECURRINGTASK_CANNOT_LOAD_CLASS;
       String message = getMessage(msgID, String.valueOf(taskClassName),
                                   ATTR_RECURRING_TASK_CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION, message,
                                    msgID, e);
     }
diff --git a/opends/src/server/org/opends/server/backends/task/Task.java b/opends/src/server/org/opends/server/backends/task/Task.java
index 15dbf67..181d2a1 100644
--- a/opends/src/server/org/opends/server/backends/task/Task.java
+++ b/opends/src/server/org/opends/server/backends/task/Task.java
@@ -40,7 +40,6 @@
 import java.util.concurrent.locks.Lock;
 
 import org.opends.server.core.DirectoryServer;
-import org.opends.server.core.Operation;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
@@ -51,6 +50,7 @@
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
 import org.opends.server.types.InitializationException;
+import org.opends.server.types.Operation;
 import org.opends.server.util.TimeThread;
 
 import static org.opends.server.config.ConfigConstants.*;
diff --git a/opends/src/server/org/opends/server/backends/task/TaskBackend.java b/opends/src/server/org/opends/server/backends/task/TaskBackend.java
index 5339327..bd8b9bd 100644
--- a/opends/src/server/org/opends/server/backends/task/TaskBackend.java
+++ b/opends/src/server/org/opends/server/backends/task/TaskBackend.java
@@ -182,7 +182,7 @@
         int    msgID   = MSGID_TASKBE_CANNOT_DECODE_RECURRING_TASK_BASE_DN;
         String message = getMessage(msgID,
                                     String.valueOf(recurringTaskBaseString),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new InitializationException(msgID, message, e);
       }
 
@@ -203,7 +203,7 @@
         int    msgID   = MSGID_TASKBE_CANNOT_DECODE_SCHEDULED_TASK_BASE_DN;
         String message = getMessage(msgID,
                                     String.valueOf(scheduledTaskBaseString),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new InitializationException(msgID, message, e);
       }
     }
@@ -247,7 +247,7 @@
 
       int msgID = MSGID_BACKEND_CANNOT_REGISTER_BASEDN;
       String message = getMessage(msgID, taskRootDN.toString(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
   }
@@ -1127,7 +1127,7 @@
 
       int msgID = MSGID_TASKBE_ERROR_GETTING_BACKING_FILE;
       unacceptableReasons.add(getMessage(msgID, ATTR_TASK_BACKING_FILE,
-                                         stackTraceToSingleLineString(e)));
+                                         getExceptionMessage(e)));
 
       configIsAcceptable = false;
     }
@@ -1198,7 +1198,7 @@
 
       int msgID = MSGID_TASKBE_ERROR_GETTING_BACKING_FILE;
       messages.add(getMessage(msgID, ATTR_TASK_BACKING_FILE,
-                              stackTraceToSingleLineString(e)));
+                              getExceptionMessage(e)));
 
       resultCode = DirectoryServer.getServerErrorResultCode();
     }
diff --git a/opends/src/server/org/opends/server/backends/task/TaskScheduler.java b/opends/src/server/org/opends/server/backends/task/TaskScheduler.java
index 4e0ecc4..121b9e0 100644
--- a/opends/src/server/org/opends/server/backends/task/TaskScheduler.java
+++ b/opends/src/server/org/opends/server/backends/task/TaskScheduler.java
@@ -43,7 +43,6 @@
 import org.opends.server.api.AlertGenerator;
 import org.opends.server.api.DirectoryThread;
 import org.opends.server.core.DirectoryServer;
-import org.opends.server.core.Operation;
 import org.opends.server.core.SearchOperation;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
@@ -58,6 +57,7 @@
 import org.opends.server.types.LDIFImportConfig;
 import org.opends.server.types.LDIFExportConfig;
 import org.opends.server.types.LockManager;
+import org.opends.server.types.Operation;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchFilter;
 import org.opends.server.util.LDIFException;
diff --git a/opends/src/server/org/opends/server/config/JMXMBean.java b/opends/src/server/org/opends/server/config/JMXMBean.java
index c770c0f..fc624e0 100644
--- a/opends/src/server/org/opends/server/config/JMXMBean.java
+++ b/opends/src/server/org/opends/server/config/JMXMBean.java
@@ -57,14 +57,15 @@
 import org.opends.server.protocols.jmx.Credential;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
+import org.opends.server.types.DebugLogLevel;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DN;
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
 import org.opends.server.types.InvokableMethod;
+import org.opends.server.types.RawModification;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchScope;
-import org.opends.server.types.DebugLogLevel;
 
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
@@ -76,12 +77,12 @@
 import static org.opends.server.config.ConfigConstants.OPTION_PENDING_VALUES;
 import org.opends.server.protocols.jmx.JmxClientConnection;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.protocols.ldap.LDAPModification;
 import org.opends.server.protocols.ldap.LDAPAttribute ;
 import org.opends.server.protocols.internal.InternalSearchOperation ;
 import org.opends.server.core.ModifyOperation ;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.ModificationType;
 
 
@@ -624,7 +625,7 @@
       int    msgID   = MSGID_CONFIG_JMX_CANNOT_GET_ATTRIBUTE;
       String message = getMessage(msgID, String.valueOf(attributeName),
                                   String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new AttributeNotFoundException(message);
     }
 
@@ -810,7 +811,7 @@
         ModificationType.REPLACE, getLdapAttributeFromJmx(
             attribute,
             newConfigEntry));
-    ArrayList<LDAPModification> ldapModList = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> ldapModList = new ArrayList<RawModification>();
     ldapModList.add(ldapModification);
 
     //
@@ -1001,7 +1002,7 @@
 
     //
     // prepare the ldap modify
-    ArrayList<LDAPModification> ldapModList = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> ldapModList = new ArrayList<RawModification>();
     for (Object o : attributes)
     {
       Attribute attribute = (Attribute) o;
diff --git a/opends/src/server/org/opends/server/controls/AccountUsableRequestControl.java b/opends/src/server/org/opends/server/controls/AccountUsableRequestControl.java
index 8190166..a886d0f 100644
--- a/opends/src/server/org/opends/server/controls/AccountUsableRequestControl.java
+++ b/opends/src/server/org/opends/server/controls/AccountUsableRequestControl.java
@@ -28,9 +28,9 @@
 
 
 
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.Control;
+import org.opends.server.types.LDAPException;
 
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
diff --git a/opends/src/server/org/opends/server/controls/AccountUsableResponseControl.java b/opends/src/server/org/opends/server/controls/AccountUsableResponseControl.java
index dec1dfa..c28ac2c 100644
--- a/opends/src/server/org/opends/server/controls/AccountUsableResponseControl.java
+++ b/opends/src/server/org/opends/server/controls/AccountUsableResponseControl.java
@@ -36,10 +36,10 @@
 import org.opends.server.protocols.asn1.ASN1Integer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.Control;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
 
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
@@ -581,7 +581,7 @@
       }
 
       int msgID = MSGID_ACCTUSABLERES_DECODE_ERROR;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, msgID, message);
     }
   }
diff --git a/opends/src/server/org/opends/server/controls/AuthorizationIdentityResponseControl.java b/opends/src/server/org/opends/server/controls/AuthorizationIdentityResponseControl.java
index 33e2eff..7c9e8e7 100644
--- a/opends/src/server/org/opends/server/controls/AuthorizationIdentityResponseControl.java
+++ b/opends/src/server/org/opends/server/controls/AuthorizationIdentityResponseControl.java
@@ -29,10 +29,10 @@
 
 
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.Control;
 import org.opends.server.types.DN;
+import org.opends.server.types.LDAPException;
 
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
diff --git a/opends/src/server/org/opends/server/controls/EntryChangeNotificationControl.java b/opends/src/server/org/opends/server/controls/EntryChangeNotificationControl.java
index 1aa39c7..0314f5c 100644
--- a/opends/src/server/org/opends/server/controls/EntryChangeNotificationControl.java
+++ b/opends/src/server/org/opends/server/controls/EntryChangeNotificationControl.java
@@ -36,11 +36,11 @@
 import org.opends.server.protocols.asn1.ASN1Long;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.Control;
 import org.opends.server.types.DN;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
 
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
@@ -314,7 +314,7 @@
       }
 
       int    msgID   = MSGID_ECN_CANNOT_DECODE_VALUE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, msgID, message, e);
     }
 
diff --git a/opends/src/server/org/opends/server/controls/LDAPAssertionRequestControl.java b/opends/src/server/org/opends/server/controls/LDAPAssertionRequestControl.java
index 4ffd9a6..e6bf289 100644
--- a/opends/src/server/org/opends/server/controls/LDAPAssertionRequestControl.java
+++ b/opends/src/server/org/opends/server/controls/LDAPAssertionRequestControl.java
@@ -31,13 +31,13 @@
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1Exception;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.Control;
 import org.opends.server.types.DirectoryException;
-import org.opends.server.types.SearchFilter;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
+import org.opends.server.types.SearchFilter;
 
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
diff --git a/opends/src/server/org/opends/server/controls/LDAPPostReadRequestControl.java b/opends/src/server/org/opends/server/controls/LDAPPostReadRequestControl.java
index 8b0c026..5c4b060 100644
--- a/opends/src/server/org/opends/server/controls/LDAPPostReadRequestControl.java
+++ b/opends/src/server/org/opends/server/controls/LDAPPostReadRequestControl.java
@@ -37,10 +37,10 @@
 import org.opends.server.protocols.asn1.ASN1Exception;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.Control;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.ObjectClass;
 
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
diff --git a/opends/src/server/org/opends/server/controls/LDAPPostReadResponseControl.java b/opends/src/server/org/opends/server/controls/LDAPPostReadResponseControl.java
index 6832455..43b9238 100644
--- a/opends/src/server/org/opends/server/controls/LDAPPostReadResponseControl.java
+++ b/opends/src/server/org/opends/server/controls/LDAPPostReadResponseControl.java
@@ -31,12 +31,12 @@
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1Exception;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.protocols.ldap.SearchResultEntryProtocolOp;
 import org.opends.server.types.Control;
 import org.opends.server.types.SearchResultEntry;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
 
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
diff --git a/opends/src/server/org/opends/server/controls/LDAPPreReadRequestControl.java b/opends/src/server/org/opends/server/controls/LDAPPreReadRequestControl.java
index 5806f21..f0901d1 100644
--- a/opends/src/server/org/opends/server/controls/LDAPPreReadRequestControl.java
+++ b/opends/src/server/org/opends/server/controls/LDAPPreReadRequestControl.java
@@ -37,12 +37,12 @@
 import org.opends.server.protocols.asn1.ASN1Exception;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.Control;
 import org.opends.server.types.ObjectClass;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
 
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
diff --git a/opends/src/server/org/opends/server/controls/LDAPPreReadResponseControl.java b/opends/src/server/org/opends/server/controls/LDAPPreReadResponseControl.java
index 48a4167..cfe1945 100644
--- a/opends/src/server/org/opends/server/controls/LDAPPreReadResponseControl.java
+++ b/opends/src/server/org/opends/server/controls/LDAPPreReadResponseControl.java
@@ -31,12 +31,12 @@
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1Exception;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.protocols.ldap.SearchResultEntryProtocolOp;
 import org.opends.server.types.Control;
 import org.opends.server.types.SearchResultEntry;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
 
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
diff --git a/opends/src/server/org/opends/server/controls/MatchedValuesControl.java b/opends/src/server/org/opends/server/controls/MatchedValuesControl.java
index a12e6f2..9de2df9 100644
--- a/opends/src/server/org/opends/server/controls/MatchedValuesControl.java
+++ b/opends/src/server/org/opends/server/controls/MatchedValuesControl.java
@@ -33,12 +33,12 @@
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
 import org.opends.server.types.Control;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
 
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
@@ -192,7 +192,7 @@
       }
 
       int    msgID   = MSGID_MATCHEDVALUES_CANNOT_DECODE_VALUE_AS_SEQUENCE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, msgID, message);
     }
 
diff --git a/opends/src/server/org/opends/server/controls/MatchedValuesFilter.java b/opends/src/server/org/opends/server/controls/MatchedValuesFilter.java
index 04e04d5..9c17f81 100644
--- a/opends/src/server/org/opends/server/controls/MatchedValuesFilter.java
+++ b/opends/src/server/org/opends/server/controls/MatchedValuesFilter.java
@@ -40,13 +40,13 @@
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.protocols.ldap.LDAPException;
-import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.ConditionResult;
+import org.opends.server.types.LDAPException;
+import org.opends.server.types.RawFilter;
 import org.opends.server.util.Validator;
 
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
@@ -131,13 +131,13 @@
   private ASN1OctetString normalizedSubInitial;
 
   // The raw, unprocessed assertion value for this matched values filter.
-  private ASN1OctetString rawAssertionValue;
+  private ByteString rawAssertionValue;
 
   // The subFinal value for this matched values filter.
-  private ASN1OctetString subFinal;
+  private ByteString subFinal;
 
   // The subInitial value for this matched values filter.
-  private ASN1OctetString subInitial;
+  private ByteString subInitial;
 
   // The processed attribute type for this matched values filter.
   private AttributeType attributeType;
@@ -159,7 +159,7 @@
   private List<ASN1OctetString> normalizedSubAny;
 
   // The set of subAny values for this matched values filter.
-  private List<ASN1OctetString> subAny;
+  private List<ByteString> subAny;
 
   // The matching rule for this matched values filter.
   private MatchingRule matchingRule;
@@ -190,10 +190,9 @@
    * @param  matchingRuleID     The matching rule ID.
    */
   private MatchedValuesFilter(byte matchType, String rawAttributeType,
-                              ASN1OctetString rawAssertionValue,
-                              ASN1OctetString subInitial,
-                              List<ASN1OctetString> subAny,
-                              ASN1OctetString subFinal, String matchingRuleID)
+                              ByteString rawAssertionValue,
+                              ByteString subInitial, List<ByteString> subAny,
+                              ByteString subFinal, String matchingRuleID)
   {
     this.matchType         = matchType;
     this.rawAttributeType  = rawAttributeType;
@@ -228,7 +227,7 @@
    */
   public static MatchedValuesFilter createEqualityFilter(
                                          String rawAttributeType,
-                                         ASN1OctetString rawAssertionValue)
+                                         ByteString rawAssertionValue)
   {
     Validator.ensureNotNull(rawAttributeType,rawAssertionValue);
 
@@ -278,9 +277,9 @@
    */
   public static MatchedValuesFilter createSubstringsFilter(
                                          String rawAttributeType,
-                                         ASN1OctetString subInitial,
-                                         List<ASN1OctetString> subAny,
-                                         ASN1OctetString subFinal)
+                                         ByteString subInitial,
+                                         List<ByteString> subAny,
+                                         ByteString subFinal)
   {
     Validator.ensureNotNull(rawAttributeType);
     return new MatchedValuesFilter(SUBSTRINGS_TYPE, rawAttributeType, null,
@@ -301,9 +300,9 @@
    */
   public static MatchedValuesFilter createSubstringsFilter(
                                          AttributeType attributeType,
-                                         ASN1OctetString subInitial,
-                                         List<ASN1OctetString> subAny,
-                                         ASN1OctetString subFinal)
+                                         ByteString subInitial,
+                                         List<ByteString> subAny,
+                                         ByteString subFinal)
   {
     Validator.ensureNotNull(attributeType);
     String rawAttributeType = attributeType.getNameOrOID();
@@ -328,7 +327,7 @@
    */
   public static MatchedValuesFilter createGreaterOrEqualFilter(
                                          String rawAttributeType,
-                                         ASN1OctetString rawAssertionValue)
+                                         ByteString rawAssertionValue)
   {
    Validator.ensureNotNull(rawAttributeType, rawAssertionValue);
 
@@ -377,7 +376,7 @@
    */
   public static MatchedValuesFilter createLessOrEqualFilter(
                                          String rawAttributeType,
-                                         ASN1OctetString rawAssertionValue)
+                                         ByteString rawAssertionValue)
   {
     Validator.ensureNotNull(rawAttributeType, rawAssertionValue);
     return new MatchedValuesFilter(LESS_OR_EQUAL_TYPE, rawAttributeType,
@@ -464,7 +463,7 @@
    */
   public static MatchedValuesFilter createApproximateFilter(
                                          String rawAttributeType,
-                                         ASN1OctetString rawAssertionValue)
+                                         ByteString rawAssertionValue)
   {
     Validator.ensureNotNull(rawAttributeType,rawAssertionValue);
 
@@ -514,7 +513,7 @@
   public static MatchedValuesFilter createExtensibleMatchFilter(
                                          String rawAttributeType,
                                          String matchingRuleID,
-                                         ASN1OctetString rawAssertionValue)
+                                         ByteString rawAssertionValue)
   {
     Validator
         .ensureNotNull(rawAttributeType, matchingRuleID, rawAssertionValue);
@@ -568,7 +567,7 @@
    * @throws  LDAPException  If the provided LDAP filter cannot be treated as a
    *                         matched values filter.
    */
-  public static MatchedValuesFilter createFromLDAPFilter(LDAPFilter filter)
+  public static MatchedValuesFilter createFromLDAPFilter(RawFilter filter)
          throws LDAPException
   {
     switch (filter.getFilterType())
@@ -668,7 +667,7 @@
         // These will all be encoded in the same way.
         ArrayList<ASN1Element> elements = new ArrayList<ASN1Element>(2);
         elements.add(new ASN1OctetString(rawAttributeType));
-        elements.add(rawAssertionValue);
+        elements.add(rawAssertionValue.toASN1OctetString());
         return new ASN1Sequence(matchType, elements);
 
 
@@ -676,23 +675,26 @@
         ArrayList<ASN1Element> subElements = new ArrayList<ASN1Element>();
         if (subInitial != null)
         {
-          subInitial.setType(TYPE_SUBINITIAL);
-          subElements.add(subInitial);
+          ASN1OctetString subInitialOS = subInitial.toASN1OctetString();
+          subInitialOS.setType(TYPE_SUBINITIAL);
+          subElements.add(subInitialOS);
         }
 
         if (subAny != null)
         {
-          for (ASN1OctetString s : subAny)
+          for (ByteString s : subAny)
           {
-            s.setType(TYPE_SUBANY);
-            subElements.add(s);
+            ASN1OctetString os = s.toASN1OctetString();
+            os.setType(TYPE_SUBANY);
+            subElements.add(os);
           }
         }
 
         if (subFinal != null)
         {
-          subFinal.setType(TYPE_SUBFINAL);
-          subElements.add(subFinal);
+          ASN1OctetString subFinalOS = subFinal.toASN1OctetString();
+          subFinalOS.setType(TYPE_SUBFINAL);
+          subElements.add(subFinalOS);
         }
 
         elements = new ArrayList<ASN1Element>(2);
@@ -719,8 +721,9 @@
                                            rawAttributeType));
         }
 
-        rawAssertionValue.setType(TYPE_MATCHING_RULE_VALUE);
-        elements.add(rawAssertionValue);
+        ASN1OctetString valueOS = rawAssertionValue.toASN1OctetString();
+        valueOS.setType(TYPE_MATCHING_RULE_VALUE);
+        elements.add(valueOS);
         return new ASN1Sequence(matchType, elements);
 
 
@@ -783,7 +786,7 @@
           }
 
           int    msgID   = MSGID_MVFILTER_CANNOT_DECODE_AVA;
-          String message = getMessage(msgID, stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, getExceptionMessage(e));
           throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, msgID, message,
                                   e);
         }
@@ -817,9 +820,9 @@
           String rawAttributeType =
                       elements.get(0).decodeAsOctetString().stringValue();
 
-          ASN1OctetString subInitial        = null;
-          ArrayList<ASN1OctetString> subAny = null;
-          ASN1OctetString subFinal          = null;
+          ByteString subInitial        = null;
+          ArrayList<ByteString> subAny = null;
+          ByteString subFinal          = null;
           for (ASN1Element e : subElements)
           {
             switch (e.getType())
@@ -841,7 +844,7 @@
               case TYPE_SUBANY:
                 if (subAny == null)
                 {
-                  subAny = new ArrayList<ASN1OctetString>();
+                  subAny = new ArrayList<ByteString>();
                 }
 
                 subAny.add(e.decodeAsOctetString());
@@ -885,7 +888,7 @@
           }
 
           int    msgID   = MSGID_MVFILTER_CANNOT_DECODE_SUBSTRINGS;
-          String message = getMessage(msgID, stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, getExceptionMessage(e));
           throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, msgID, message,
                                   e);
         }
@@ -908,7 +911,7 @@
           }
 
           int    msgID   = MSGID_MVFILTER_CANNOT_DECODE_PRESENT_TYPE;
-          String message = getMessage(msgID, stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, getExceptionMessage(e));
           throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, msgID, message,
                                   e);
         }
@@ -1005,7 +1008,7 @@
           }
 
           int    msgID   = MSGID_MVFILTER_CANNOT_DECODE_EXTENSIBLE_MATCH;
-          String message = getMessage(msgID, stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, getExceptionMessage(e));
           throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, msgID, message,
                                   e);
         }
@@ -1128,7 +1131,7 @@
    * @return  The raw, unprocessed assertion value for this matched values
    *          filter, or <CODE>null</CODE> if there is none.
    */
-  public ASN1OctetString getRawAssertionValue()
+  public ByteString getRawAssertionValue()
   {
     return rawAssertionValue;
   }
@@ -1142,7 +1145,7 @@
    * @param  rawAssertionValue  The raw, unprocessed assertion value for this
    *                            matched values filter.
    */
-  public void setRawAssertionValue(ASN1OctetString rawAssertionValue)
+  public void setRawAssertionValue(ByteString rawAssertionValue)
   {
     this.rawAssertionValue = rawAssertionValue;
 
@@ -1203,7 +1206,7 @@
    * @return  The subInitial element for this matched values filter, or
    *          <CODE>null</CODE> if there is none.
    */
-  public ASN1OctetString getSubInitialElement()
+  public ByteString getSubInitialElement()
   {
     return subInitial;
   }
@@ -1215,7 +1218,7 @@
    *
    * @param  subInitial  The subInitial element for this matched values filter.
    */
-  public void setSubInitialElement(ASN1OctetString subInitial)
+  public void setSubInitialElement(ByteString subInitial)
   {
     this.subInitial = subInitial;
 
@@ -1265,7 +1268,7 @@
    *          there are none, then the return value may be either
    *          <CODE>null</CODE> or an empty list.
    */
-  public List<ASN1OctetString> getSubAnyElements()
+  public List<ByteString> getSubAnyElements()
   {
     return subAny;
   }
@@ -1277,7 +1280,7 @@
    *
    * @param  subAny  The set of subAny elements for this matched values filter.
    */
-  public void setSubAnyElements(List<ASN1OctetString> subAny)
+  public void setSubAnyElements(List<ByteString> subAny)
   {
     this.subAny = subAny;
 
@@ -1314,7 +1317,7 @@
         normalizedSubAny = new ArrayList<ASN1OctetString>();
         try
         {
-          for (ASN1OctetString s : subAny)
+          for (ByteString s : subAny)
           {
             normalizedSubAny.add(
                  substringMatchingRule.normalizeSubstring(s).
@@ -1344,7 +1347,7 @@
    * @return  The subFinal element for this matched values filter, or
    *          <CODE>null</CODE> if there is none.
    */
-  public ASN1OctetString getSubFinalElement()
+  public ByteString getSubFinalElement()
   {
     return subFinal;
   }
@@ -1356,7 +1359,7 @@
    *
    * @param  subFinal  The subFinal element for this matched values filter.
    */
-  public void setSubFinalElement(ASN1OctetString subFinal)
+  public void setSubFinalElement(ByteString subFinal)
   {
     this.subFinal = subFinal;
 
@@ -1847,7 +1850,7 @@
         buffer.append("(");
         buffer.append(rawAttributeType);
         buffer.append("=");
-        LDAPFilter.valueToFilterString(buffer, rawAssertionValue);
+        RawFilter.valueToFilterString(buffer, rawAssertionValue);
         buffer.append(")");
         break;
 
@@ -1858,22 +1861,22 @@
         buffer.append("=");
         if (subInitial != null)
         {
-          LDAPFilter.valueToFilterString(buffer, subInitial);
+          RawFilter.valueToFilterString(buffer, subInitial);
         }
 
         if (subAny != null)
         {
-          for (ASN1OctetString s : subAny)
+          for (ByteString s : subAny)
           {
             buffer.append("*");
-            LDAPFilter.valueToFilterString(buffer, s);
+            RawFilter.valueToFilterString(buffer, s);
           }
         }
 
         buffer.append("*");
         if (subFinal != null)
         {
-          LDAPFilter.valueToFilterString(buffer, subFinal);
+          RawFilter.valueToFilterString(buffer, subFinal);
         }
         buffer.append(")");
         break;
@@ -1883,7 +1886,7 @@
         buffer.append("(");
         buffer.append(rawAttributeType);
         buffer.append(">=");
-        LDAPFilter.valueToFilterString(buffer, rawAssertionValue);
+        RawFilter.valueToFilterString(buffer, rawAssertionValue);
         buffer.append(")");
         break;
 
@@ -1892,7 +1895,7 @@
         buffer.append("(");
         buffer.append(rawAttributeType);
         buffer.append("<=");
-        LDAPFilter.valueToFilterString(buffer, rawAssertionValue);
+        RawFilter.valueToFilterString(buffer, rawAssertionValue);
         buffer.append(")");
         break;
 
@@ -1908,7 +1911,7 @@
         buffer.append("(");
         buffer.append(rawAttributeType);
         buffer.append("~=");
-        LDAPFilter.valueToFilterString(buffer, rawAssertionValue);
+        RawFilter.valueToFilterString(buffer, rawAssertionValue);
         buffer.append(")");
         break;
 
@@ -1928,7 +1931,7 @@
         }
 
         buffer.append(":=");
-        LDAPFilter.valueToFilterString(buffer, rawAssertionValue);
+        RawFilter.valueToFilterString(buffer, rawAssertionValue);
         buffer.append(")");
         break;
     }
diff --git a/opends/src/server/org/opends/server/controls/PagedResultsControl.java b/opends/src/server/org/opends/server/controls/PagedResultsControl.java
index 6172939..9a35056 100644
--- a/opends/src/server/org/opends/server/controls/PagedResultsControl.java
+++ b/opends/src/server/org/opends/server/controls/PagedResultsControl.java
@@ -38,8 +38,8 @@
 import org.opends.server.protocols.asn1.ASN1Integer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.types.Control;
+import org.opends.server.types.LDAPException;
 
 import java.util.ArrayList;
 
diff --git a/opends/src/server/org/opends/server/controls/PasswordExpiredControl.java b/opends/src/server/org/opends/server/controls/PasswordExpiredControl.java
index 22af255..c74c9a6 100644
--- a/opends/src/server/org/opends/server/controls/PasswordExpiredControl.java
+++ b/opends/src/server/org/opends/server/controls/PasswordExpiredControl.java
@@ -28,9 +28,9 @@
 
 
 
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.Control;
+import org.opends.server.types.LDAPException;
 
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
diff --git a/opends/src/server/org/opends/server/controls/PasswordExpiringControl.java b/opends/src/server/org/opends/server/controls/PasswordExpiringControl.java
index aef7d4c..85ab72e 100644
--- a/opends/src/server/org/opends/server/controls/PasswordExpiringControl.java
+++ b/opends/src/server/org/opends/server/controls/PasswordExpiringControl.java
@@ -29,10 +29,10 @@
 
 
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.Control;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
 
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
@@ -162,7 +162,7 @@
       }
 
       int msgID = MSGID_PWEXPIRING_CANNOT_DECODE_SECONDS_UNTIL_EXPIRATION;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, msgID, message);
     }
 
diff --git a/opends/src/server/org/opends/server/controls/PasswordPolicyRequestControl.java b/opends/src/server/org/opends/server/controls/PasswordPolicyRequestControl.java
index 16c29b3..f690c1d 100644
--- a/opends/src/server/org/opends/server/controls/PasswordPolicyRequestControl.java
+++ b/opends/src/server/org/opends/server/controls/PasswordPolicyRequestControl.java
@@ -28,9 +28,9 @@
 
 
 
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.Control;
+import org.opends.server.types.LDAPException;
 
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
diff --git a/opends/src/server/org/opends/server/controls/PasswordPolicyResponseControl.java b/opends/src/server/org/opends/server/controls/PasswordPolicyResponseControl.java
index eb12d41..0a3b680 100644
--- a/opends/src/server/org/opends/server/controls/PasswordPolicyResponseControl.java
+++ b/opends/src/server/org/opends/server/controls/PasswordPolicyResponseControl.java
@@ -36,9 +36,9 @@
 import org.opends.server.protocols.asn1.ASN1Integer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.Control;
+import org.opends.server.types.LDAPException;
 
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
@@ -338,7 +338,7 @@
       }
 
       int    msgID   = MSGID_PWPOLICYRES_DECODE_ERROR;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, msgID, message);
     }
   }
diff --git a/opends/src/server/org/opends/server/controls/PersistentSearchChangeType.java b/opends/src/server/org/opends/server/controls/PersistentSearchChangeType.java
index 128b5a5..fb05ab4 100644
--- a/opends/src/server/org/opends/server/controls/PersistentSearchChangeType.java
+++ b/opends/src/server/org/opends/server/controls/PersistentSearchChangeType.java
@@ -32,8 +32,8 @@
 import java.util.Iterator;
 import java.util.Set;
 
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPResultCode;
+import org.opends.server.types.LDAPException;
 
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
diff --git a/opends/src/server/org/opends/server/controls/PersistentSearchControl.java b/opends/src/server/org/opends/server/controls/PersistentSearchControl.java
index e0ff276..e1ab451 100644
--- a/opends/src/server/org/opends/server/controls/PersistentSearchControl.java
+++ b/opends/src/server/org/opends/server/controls/PersistentSearchControl.java
@@ -36,9 +36,9 @@
 import org.opends.server.protocols.asn1.ASN1Integer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.Control;
+import org.opends.server.types.LDAPException;
 
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
@@ -247,7 +247,7 @@
       }
 
       int    msgID   = MSGID_PSEARCH_CANNOT_DECODE_VALUE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, msgID, message, e);
     }
 
diff --git a/opends/src/server/org/opends/server/controls/ProxiedAuthV1Control.java b/opends/src/server/org/opends/server/controls/ProxiedAuthV1Control.java
index 3459781..2153919 100644
--- a/opends/src/server/org/opends/server/controls/ProxiedAuthV1Control.java
+++ b/opends/src/server/org/opends/server/controls/ProxiedAuthV1Control.java
@@ -36,12 +36,12 @@
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.Control;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.LockManager;
 import org.opends.server.types.ResultCode;
 
@@ -227,7 +227,7 @@
       }
 
       int    msgID   = MSGID_PROXYAUTH1_CANNOT_DECODE_VALUE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, msgID, message, e);
     }
 
diff --git a/opends/src/server/org/opends/server/controls/ProxiedAuthV2Control.java b/opends/src/server/org/opends/server/controls/ProxiedAuthV2Control.java
index 00481d2..278df15 100644
--- a/opends/src/server/org/opends/server/controls/ProxiedAuthV2Control.java
+++ b/opends/src/server/org/opends/server/controls/ProxiedAuthV2Control.java
@@ -35,12 +35,12 @@
 import org.opends.server.core.PasswordPolicyState;
 import org.opends.server.protocols.asn1.ASN1Exception;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.Control;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.LockManager;
 import org.opends.server.types.ResultCode;
 
@@ -167,7 +167,7 @@
         }
 
         int    msgID   = MSGID_PROXYAUTH2_CANNOT_DECODE_VALUE;
-        String message = getMessage(msgID, stackTraceToSingleLineString(ae));
+        String message = getMessage(msgID, getExceptionMessage(ae));
         throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, msgID, message,
                                 ae);
       }
@@ -180,7 +180,7 @@
       }
 
       int    msgID   = MSGID_PROXYAUTH2_CANNOT_DECODE_VALUE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, msgID, message, e);
     }
 
diff --git a/opends/src/server/org/opends/server/core/AbandonOperation.java b/opends/src/server/org/opends/server/core/AbandonOperation.java
index e16f7df..27002d8 100644
--- a/opends/src/server/org/opends/server/core/AbandonOperation.java
+++ b/opends/src/server/org/opends/server/core/AbandonOperation.java
@@ -36,6 +36,7 @@
 import org.opends.server.types.CancelResult;
 import org.opends.server.types.Control;
 import org.opends.server.types.DisconnectReason;
+import org.opends.server.types.Operation;
 import org.opends.server.types.OperationType;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.operation.PostOperationAbandonOperation;
@@ -386,7 +387,7 @@
    * {@inheritDoc}
    */
   @Override()
-  boolean setCancelRequest(CancelRequest cancelRequest)
+  protected boolean setCancelRequest(CancelRequest cancelRequest)
   {
     // Abandon operations cannot be canceled.
     return false;
diff --git a/opends/src/server/org/opends/server/core/AccessControlConfigManager.java b/opends/src/server/org/opends/server/core/AccessControlConfigManager.java
index 24b7396..2fcc334 100644
--- a/opends/src/server/org/opends/server/core/AccessControlConfigManager.java
+++ b/opends/src/server/org/opends/server/core/AccessControlConfigManager.java
@@ -467,7 +467,7 @@
           int msgID = MSGID_CONFIG_AUTHZ_UNABLE_TO_LOAD_CLASS;
           String message = getMessage(msgID, className, String
               .valueOf(configuration.dn().toString()),
-              stackTraceToSingleLineString(e));
+              getExceptionMessage(e));
           throw new ConfigException(msgID, message, e);
         } catch (ClassCastException e) {
           if (debugEnabled())
@@ -479,13 +479,13 @@
           String message = getMessage(msgID, className, String
               .valueOf(configuration.dn().toString()),
               AccessControlProvider.class.getName(),
-              stackTraceToSingleLineString(e));
+              getExceptionMessage(e));
           throw new ConfigException(msgID, message, e);
         }
       } catch (ConfigException e) {
         int msgID = MSGID_CONFIG_AUTHZ_UNABLE_TO_DETERMINE_CLASS;
         String message = getMessage(msgID, configuration.dn()
-            .toString(), stackTraceToSingleLineString(e));
+            .toString(), getExceptionMessage(e));
         throw new ConfigException(msgID, message, e);
       }
     }
diff --git a/opends/src/server/org/opends/server/core/AddOperation.java b/opends/src/server/org/opends/server/core/AddOperation.java
index e5f77dd..439413c 100644
--- a/opends/src/server/org/opends/server/core/AddOperation.java
+++ b/opends/src/server/org/opends/server/core/AddOperation.java
@@ -58,7 +58,6 @@
 import org.opends.server.schema.UserPasswordSyntax;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.ldap.LDAPAttribute;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
@@ -73,10 +72,13 @@
 import org.opends.server.types.Entry;
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.LockManager;
 import org.opends.server.types.ObjectClass;
+import org.opends.server.types.Operation;
 import org.opends.server.types.OperationType;
 import org.opends.server.types.Privilege;
+import org.opends.server.types.RawAttribute;
 import org.opends.server.types.RDN;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchFilter;
@@ -112,9 +114,6 @@
        implements PreParseAddOperation, PreOperationAddOperation,
                   PostOperationAddOperation, PostResponseAddOperation
 {
-
-
-
   // The set of response controls to send to the client.
   private ArrayList<Control> responseControls;
 
@@ -134,7 +133,7 @@
   // The set of attributes (including the objectclass attribute) in a raw,
   // unprocessed form as provided in the request.  One or more of these
   // attributes may be invalid.
-  private List<LDAPAttribute> rawAttributes;
+  private List<RawAttribute> rawAttributes;
 
   // The set of operational attributes for the entry to add.
   private Map<AttributeType,List<Attribute>> operationalAttributes;
@@ -173,7 +172,7 @@
    */
   public AddOperation(ClientConnection clientConnection, long operationID,
                       int messageID, List<Control> requestControls,
-                      ByteString rawEntryDN, List<LDAPAttribute> rawAttributes)
+                      ByteString rawEntryDN, List<RawAttribute> rawAttributes)
   {
     super(clientConnection, operationID, messageID, requestControls);
 
@@ -226,7 +225,7 @@
 
     rawEntryDN = new ASN1OctetString(entryDN.toString());
 
-    rawAttributes = new ArrayList<LDAPAttribute>();
+    rawAttributes = new ArrayList<RawAttribute>();
 
     ArrayList<ASN1OctetString> ocValues = new ArrayList<ASN1OctetString>();
     for (String s : objectClasses.values())
@@ -316,7 +315,7 @@
    * @return  The set of attributes in their raw, unparsed form as read from the
    *          client request.
    */
-  public final List<LDAPAttribute> getRawAttributes()
+  public final List<RawAttribute> getRawAttributes()
   {
     return rawAttributes;
   }
@@ -330,7 +329,7 @@
    * @param  rawAttribute  The attribute to add to the set of raw attributes for
    *                       this add operation.
    */
-  public final void addRawAttribute(LDAPAttribute rawAttribute)
+  public final void addRawAttribute(RawAttribute rawAttribute)
   {
     rawAttributes.add(rawAttribute);
 
@@ -347,7 +346,7 @@
    *
    * @param  rawAttributes  The set of raw attributes for this add operation.
    */
-  public final void setRawAttributes(List<LDAPAttribute> rawAttributes)
+  public final void setRawAttributes(List<RawAttribute> rawAttributes)
   {
     this.rawAttributes = rawAttributes;
 
@@ -832,7 +831,7 @@
         objectClasses         = new HashMap<ObjectClass,String>();
         userAttributes        = new HashMap<AttributeType,List<Attribute>>();
         operationalAttributes = new HashMap<AttributeType,List<Attribute>>();
-        for (LDAPAttribute a : rawAttributes)
+        for (RawAttribute a : rawAttributes)
         {
           try
           {
@@ -1057,7 +1056,7 @@
                      ErrorLogSeverity.SEVERE_ERROR,
                      MSGID_ADD_SYNCH_CONFLICT_RESOLUTION_FAILED,
                      getConnectionID(), getOperationID(),
-                     stackTraceToSingleLineString(de));
+                     getExceptionMessage(de));
 
             setResponseData(de);
             break addProcessing;
@@ -2022,7 +2021,7 @@
                   logError(ErrorLogCategory.SYNCHRONIZATION,
                            ErrorLogSeverity.SEVERE_ERROR,
                            MSGID_ADD_SYNCH_PREOP_FAILED, getConnectionID(),
-                           getOperationID(), stackTraceToSingleLineString(de));
+                           getOperationID(), getExceptionMessage(de));
 
                   setResponseData(de);
                   break addProcessing;
@@ -2151,7 +2150,7 @@
             logError(ErrorLogCategory.SYNCHRONIZATION,
                      ErrorLogSeverity.SEVERE_ERROR,
                      MSGID_ADD_SYNCH_POSTOP_FAILED, getConnectionID(),
-                     getOperationID(), stackTraceToSingleLineString(de));
+                     getOperationID(), getExceptionMessage(de));
 
             setResponseData(de);
             break;
@@ -2207,7 +2206,7 @@
           }
 
           int    msgID   = MSGID_ADD_ERROR_NOTIFYING_CHANGE_LISTENER;
-          String message = getMessage(msgID, stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, getExceptionMessage(e));
           logError(ErrorLogCategory.CORE_SERVER, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
         }
@@ -2246,7 +2245,7 @@
 
           int    msgID   = MSGID_ADD_ERROR_NOTIFYING_PERSISTENT_SEARCH;
           String message = getMessage(msgID, String.valueOf(persistentSearch),
-                                      stackTraceToSingleLineString(e));
+                                      getExceptionMessage(e));
           logError(ErrorLogCategory.CORE_SERVER, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
 
@@ -2543,7 +2542,7 @@
    * {@inheritDoc}
    */
   @Override()
-  boolean setCancelRequest(CancelRequest cancelRequest)
+  protected boolean setCancelRequest(CancelRequest cancelRequest)
   {
     this.cancelRequest = cancelRequest;
     return true;
diff --git a/opends/src/server/org/opends/server/core/BackendConfigManager.java b/opends/src/server/org/opends/server/core/BackendConfigManager.java
index b932025..0fbc90e 100644
--- a/opends/src/server/org/opends/server/core/BackendConfigManager.java
+++ b/opends/src/server/org/opends/server/core/BackendConfigManager.java
@@ -138,7 +138,7 @@
       }
 
       int    msgID   = MSGID_CONFIG_BACKEND_CANNOT_GET_CONFIG_BASE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new ConfigException(msgID, message, e);
 
     }
@@ -362,7 +362,7 @@
 
           int msgID = MSGID_CONFIG_BACKEND_CANNOT_REGISTER_BACKEND;
           String message = getMessage(msgID, backendID,
-                                      stackTraceToSingleLineString(e));
+                                      getExceptionMessage(e));
           logError(ErrorLogCategory.CONFIGURATION,
                    ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
@@ -841,7 +841,7 @@
 
         int msgID = MSGID_CONFIG_BACKEND_CANNOT_REGISTER_BACKEND;
         String message = getMessage(msgID, backendID,
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
 
         resultCode = DirectoryServer.getServerErrorResultCode();
         messages.add(message);
@@ -974,7 +974,7 @@
       }
       catch (Exception e)
       {
-        unacceptableReason.add(stackTraceToSingleLineString(e));
+        unacceptableReason.add(getExceptionMessage(e));
         return false;
       }
     }
@@ -1218,7 +1218,7 @@
 
       int msgID = MSGID_CONFIG_BACKEND_CANNOT_REGISTER_BACKEND;
       String message = getMessage(msgID, backendID,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
 
       resultCode = DirectoryServer.getServerErrorResultCode();
       messages.add(message);
diff --git a/opends/src/server/org/opends/server/core/BindOperation.java b/opends/src/server/org/opends/server/core/BindOperation.java
index ac70224..554470a 100644
--- a/opends/src/server/org/opends/server/core/BindOperation.java
+++ b/opends/src/server/org/opends/server/core/BindOperation.java
@@ -63,6 +63,7 @@
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
 import org.opends.server.types.LockManager;
+import org.opends.server.types.Operation;
 import org.opends.server.types.OperationType;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.operation.PostOperationBindOperation;
@@ -1655,7 +1656,7 @@
             }
 
             int    msgID   = MSGID_BIND_OPERATION_PASSWORD_VALIDATION_EXCEPTION;
-            String message = getMessage(msgID, stackTraceToSingleLineString(e));
+            String message = getMessage(msgID, getExceptionMessage(e));
 
             setResultCode(DirectoryServer.getServerErrorResultCode());
             setAuthFailureReason(msgID, message);
@@ -2313,7 +2314,7 @@
    * {@inheritDoc}
    */
   @Override()
-  boolean setCancelRequest(CancelRequest cancelRequest)
+  protected boolean setCancelRequest(CancelRequest cancelRequest)
   {
     // Bind operations cannot be canceled.
     return false;
diff --git a/opends/src/server/org/opends/server/core/CompareOperation.java b/opends/src/server/org/opends/server/core/CompareOperation.java
index 09a6f16..9af18f1 100644
--- a/opends/src/server/org/opends/server/core/CompareOperation.java
+++ b/opends/src/server/org/opends/server/core/CompareOperation.java
@@ -43,7 +43,6 @@
 import org.opends.server.controls.ProxiedAuthV1Control;
 import org.opends.server.controls.ProxiedAuthV2Control;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
@@ -55,7 +54,9 @@
 import org.opends.server.types.DisconnectReason;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.LockManager;
+import org.opends.server.types.Operation;
 import org.opends.server.types.OperationType;
 import org.opends.server.types.Privilege;
 import org.opends.server.types.ResultCode;
@@ -1177,7 +1178,7 @@
    * {@inheritDoc}
    */
   @Override()
-  boolean setCancelRequest(CancelRequest cancelRequest)
+  protected boolean setCancelRequest(CancelRequest cancelRequest)
   {
     this.cancelRequest = cancelRequest;
     return true;
diff --git a/opends/src/server/org/opends/server/core/DefaultAccessControlProvider.java b/opends/src/server/org/opends/server/core/DefaultAccessControlProvider.java
index a8122ef..9dc931d 100644
--- a/opends/src/server/org/opends/server/core/DefaultAccessControlProvider.java
+++ b/opends/src/server/org/opends/server/core/DefaultAccessControlProvider.java
@@ -31,6 +31,7 @@
 import org.opends.server.api.AccessControlProvider;
 import org.opends.server.config.ConfigException;
 import org.opends.server.types.InitializationException;
+import org.opends.server.types.Operation;
 import org.opends.server.types.SearchResultEntry;
 import org.opends.server.types.SearchResultReference;
 import org.opends.server.types.Entry;
diff --git a/opends/src/server/org/opends/server/core/DeleteOperation.java b/opends/src/server/org/opends/server/core/DeleteOperation.java
index 906aa35..4a4f7f3 100644
--- a/opends/src/server/org/opends/server/core/DeleteOperation.java
+++ b/opends/src/server/org/opends/server/core/DeleteOperation.java
@@ -46,7 +46,6 @@
 import org.opends.server.controls.ProxiedAuthV1Control;
 import org.opends.server.controls.ProxiedAuthV2Control;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.CancelledOperationException;
@@ -59,7 +58,9 @@
 import org.opends.server.types.Entry;
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.LockManager;
+import org.opends.server.types.Operation;
 import org.opends.server.types.OperationType;
 import org.opends.server.types.Privilege;
 import org.opends.server.types.ResultCode;
@@ -648,7 +649,7 @@
                      ErrorLogSeverity.SEVERE_ERROR,
                      MSGID_DELETE_SYNCH_CONFLICT_RESOLUTION_FAILED,
                      getConnectionID(), getOperationID(),
-                     stackTraceToSingleLineString(de));
+                     getExceptionMessage(de));
 
             setResponseData(de);
             break deleteProcessing;
@@ -1093,7 +1094,7 @@
                 logError(ErrorLogCategory.SYNCHRONIZATION,
                          ErrorLogSeverity.SEVERE_ERROR,
                          MSGID_DELETE_SYNCH_PREOP_FAILED, getConnectionID(),
-                         getOperationID(), stackTraceToSingleLineString(de));
+                         getOperationID(), getExceptionMessage(de));
 
                 setResponseData(de);
                 break deleteProcessing;
@@ -1212,7 +1213,7 @@
             logError(ErrorLogCategory.SYNCHRONIZATION,
                      ErrorLogSeverity.SEVERE_ERROR,
                      MSGID_DELETE_SYNCH_POSTOP_FAILED, getConnectionID(),
-                     getOperationID(), stackTraceToSingleLineString(de));
+                     getOperationID(), getExceptionMessage(de));
 
             setResponseData(de);
             break;
@@ -1264,7 +1265,7 @@
           }
 
           int    msgID   = MSGID_DELETE_ERROR_NOTIFYING_CHANGE_LISTENER;
-          String message = getMessage(msgID, stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, getExceptionMessage(e));
           logError(ErrorLogCategory.CORE_SERVER, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
         }
@@ -1303,7 +1304,7 @@
 
           int    msgID   = MSGID_DELETE_ERROR_NOTIFYING_PERSISTENT_SEARCH;
           String message = getMessage(msgID, String.valueOf(persistentSearch),
-                                      stackTraceToSingleLineString(e));
+                                      getExceptionMessage(e));
           logError(ErrorLogCategory.CORE_SERVER, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
 
@@ -1376,7 +1377,7 @@
    * {@inheritDoc}
    */
   @Override()
-  boolean setCancelRequest(CancelRequest cancelRequest)
+  protected boolean setCancelRequest(CancelRequest cancelRequest)
   {
     this.cancelRequest = cancelRequest;
     return true;
diff --git a/opends/src/server/org/opends/server/core/DirectoryServer.java b/opends/src/server/org/opends/server/core/DirectoryServer.java
index 64dd31c..aa917c5 100644
--- a/opends/src/server/org/opends/server/core/DirectoryServer.java
+++ b/opends/src/server/org/opends/server/core/DirectoryServer.java
@@ -8981,7 +8981,7 @@
       // be able to start it anyway.
       int msgID = MSGID_CANNOT_ACQUIRE_EXCLUSIVE_SERVER_LOCK;
       String message = getMessage(msgID, lockFile,
-          stackTraceToSingleLineString(e));
+          getExceptionMessage(e));
       System.err.println(message);
       isServerRunning = true;
     }
diff --git a/opends/src/server/org/opends/server/core/ExtendedOperation.java b/opends/src/server/org/opends/server/core/ExtendedOperation.java
index 1ba333f..8cb1471 100644
--- a/opends/src/server/org/opends/server/core/ExtendedOperation.java
+++ b/opends/src/server/org/opends/server/core/ExtendedOperation.java
@@ -43,6 +43,7 @@
 import org.opends.server.types.Control;
 import org.opends.server.types.DisconnectReason;
 import org.opends.server.types.DN;
+import org.opends.server.types.Operation;
 import org.opends.server.types.OperationType;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.operation.PostOperationExtendedOperation;
@@ -744,7 +745,7 @@
    * {@inheritDoc}
    */
   @Override()
-  boolean setCancelRequest(CancelRequest cancelRequest)
+  protected boolean setCancelRequest(CancelRequest cancelRequest)
   {
     this.cancelRequest = cancelRequest;
     return true;
diff --git a/opends/src/server/org/opends/server/core/LockFileManager.java b/opends/src/server/org/opends/server/core/LockFileManager.java
index e8b3b25..459751c 100644
--- a/opends/src/server/org/opends/server/core/LockFileManager.java
+++ b/opends/src/server/org/opends/server/core/LockFileManager.java
@@ -132,7 +132,7 @@
 
         int msgID = MSGID_FILELOCKER_LOCK_SHARED_FAILED_CREATE;
         failureReason.append(getMessage(msgID, lockFile,
-                                        stackTraceToSingleLineString(e)));
+                                        getExceptionMessage(e)));
         return false;
       }
 
@@ -154,7 +154,7 @@
 
         int msgID = MSGID_FILELOCKER_LOCK_SHARED_FAILED_OPEN;
         failureReason.append(getMessage(msgID, lockFile,
-                                        stackTraceToSingleLineString(e)));
+                                        getExceptionMessage(e)));
 
         if (raf != null)
         {
@@ -184,8 +184,7 @@
         }
 
         int msgID = MSGID_FILELOCKER_LOCK_SHARED_FAILED_LOCK;
-        failureReason.append(getMessage(msgID,
-                                        stackTraceToSingleLineString(e)));
+        failureReason.append(getMessage(msgID, getExceptionMessage(e)));
         if (channel != null)
         {
           try
@@ -309,7 +308,7 @@
 
         int msgID = MSGID_FILELOCKER_LOCK_EXCLUSIVE_FAILED_CREATE;
         failureReason.append(getMessage(msgID, lockFile,
-                                        stackTraceToSingleLineString(e)));
+                                        getExceptionMessage(e)));
         return false;
       }
 
@@ -331,7 +330,7 @@
 
         int msgID = MSGID_FILELOCKER_LOCK_EXCLUSIVE_FAILED_OPEN;
         failureReason.append(getMessage(msgID, lockFile,
-                                        stackTraceToSingleLineString(e)));
+                                        getExceptionMessage(e)));
         if (raf != null)
         {
           try
@@ -361,7 +360,7 @@
 
         int msgID = MSGID_FILELOCKER_LOCK_EXCLUSIVE_FAILED_LOCK;
         failureReason.append(getMessage(msgID, lockFile,
-                                        stackTraceToSingleLineString(e)));
+                                        getExceptionMessage(e)));
         if (channel != null)
         {
           try
@@ -470,7 +469,7 @@
 
           int msgID = MSGID_FILELOCKER_UNLOCK_EXCLUSIVE_FAILED_RELEASE;
           failureReason.append(getMessage(msgID, lockFile,
-                                          stackTraceToSingleLineString(e)));
+                                          getExceptionMessage(e)));
           return false;
         }
 
@@ -518,7 +517,7 @@
 
             int msgID = MSGID_FILELOCKER_UNLOCK_SHARED_FAILED_RELEASE;
             failureReason.append(getMessage(msgID, lockFile,
-                                            stackTraceToSingleLineString(e)));
+                                            getExceptionMessage(e)));
             return false;
           }
 
diff --git a/opends/src/server/org/opends/server/core/ModifyDNOperation.java b/opends/src/server/org/opends/server/core/ModifyDNOperation.java
index 0fefd47..ff73df2 100644
--- a/opends/src/server/org/opends/server/core/ModifyDNOperation.java
+++ b/opends/src/server/org/opends/server/core/ModifyDNOperation.java
@@ -50,7 +50,6 @@
 import org.opends.server.controls.ProxiedAuthV1Control;
 import org.opends.server.controls.ProxiedAuthV2Control;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
@@ -65,9 +64,11 @@
 import org.opends.server.types.Entry;
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.LockManager;
 import org.opends.server.types.Modification;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.Operation;
 import org.opends.server.types.OperationType;
 import org.opends.server.types.Privilege;
 import org.opends.server.types.RDN;
@@ -970,7 +971,7 @@
         appendErrorMessage(getMessage(MSGID_MODDN_EXCEPTION_LOCKING_NEW_DN,
                                       String.valueOf(entryDN),
                                       String.valueOf(newDN),
-                                      stackTraceToSingleLineString(e)));
+                                      getExceptionMessage(e)));
 
         skipPostOperation = true;
         break modifyDNProcessing;
@@ -1082,7 +1083,7 @@
                      ErrorLogSeverity.SEVERE_ERROR,
                      MSGID_MODDN_SYNCH_CONFLICT_RESOLUTION_FAILED,
                      getConnectionID(), getOperationID(),
-                     stackTraceToSingleLineString(de));
+                     getExceptionMessage(de));
 
             setResponseData(de);
             break modifyDNProcessing;
@@ -1827,7 +1828,7 @@
                 logError(ErrorLogCategory.SYNCHRONIZATION,
                          ErrorLogSeverity.SEVERE_ERROR,
                          MSGID_MODDN_SYNCH_PREOP_FAILED, getConnectionID(),
-                         getOperationID(), stackTraceToSingleLineString(de));
+                         getOperationID(), getExceptionMessage(de));
 
                 setResponseData(de);
                 break modifyDNProcessing;
@@ -1998,7 +1999,7 @@
             logError(ErrorLogCategory.SYNCHRONIZATION,
                      ErrorLogSeverity.SEVERE_ERROR,
                      MSGID_MODDN_SYNCH_POSTOP_FAILED, getConnectionID(),
-                     getOperationID(), stackTraceToSingleLineString(de));
+                     getOperationID(), getExceptionMessage(de));
 
             setResponseData(de);
             break;
@@ -2050,7 +2051,7 @@
           }
 
           int    msgID   = MSGID_MODDN_ERROR_NOTIFYING_CHANGE_LISTENER;
-          String message = getMessage(msgID, stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, getExceptionMessage(e));
           logError(ErrorLogCategory.CORE_SERVER, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
         }
@@ -2089,7 +2090,7 @@
 
           int    msgID   = MSGID_MODDN_ERROR_NOTIFYING_PERSISTENT_SEARCH;
           String message = getMessage(msgID, String.valueOf(persistentSearch),
-                                      stackTraceToSingleLineString(e));
+                                      getExceptionMessage(e));
           logError(ErrorLogCategory.CORE_SERVER, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
 
@@ -2162,7 +2163,7 @@
    * {@inheritDoc}
    */
   @Override()
-  boolean setCancelRequest(CancelRequest cancelRequest)
+  protected boolean setCancelRequest(CancelRequest cancelRequest)
   {
     this.cancelRequest = cancelRequest;
     return true;
diff --git a/opends/src/server/org/opends/server/core/ModifyOperation.java b/opends/src/server/org/opends/server/core/ModifyOperation.java
index 58cb53b..2882fb7 100644
--- a/opends/src/server/org/opends/server/core/ModifyOperation.java
+++ b/opends/src/server/org/opends/server/core/ModifyOperation.java
@@ -55,7 +55,6 @@
 import org.opends.server.controls.ProxiedAuthV2Control;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.ldap.LDAPAttribute;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPModification;
 import org.opends.server.schema.AuthPasswordSyntax;
 import org.opends.server.schema.BooleanSyntax;
@@ -71,17 +70,21 @@
 import org.opends.server.types.CancelRequest;
 import org.opends.server.types.CancelResult;
 import org.opends.server.types.Control;
+import org.opends.server.types.DebugLogLevel;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DisconnectReason;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.LockManager;
 import org.opends.server.types.Modification;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.Operation;
 import org.opends.server.types.OperationType;
 import org.opends.server.types.Privilege;
+import org.opends.server.types.RawModification;
 import org.opends.server.types.RDN;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchFilter;
@@ -95,9 +98,7 @@
 import static org.opends.server.config.ConfigConstants.*;
 import static org.opends.server.core.CoreConstants.*;
 import static org.opends.server.loggers.Access.*;
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
-import org.opends.server.types.DebugLogLevel;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.loggers.Error.*;
 import static org.opends.server.messages.CoreMessages.*;
 import static org.opends.server.messages.MessageHandler.*;
@@ -116,9 +117,6 @@
        implements PreParseModifyOperation, PreOperationModifyOperation,
                   PostOperationModifyOperation, PostResponseModifyOperation
 {
-
-
-
   // The raw, unprocessed entry DN as included by the client request.
   private ByteString rawEntryDN;
 
@@ -145,7 +143,7 @@
 
   // The raw, unprocessed set of modifications as included in the client
   // request.
-  private List<LDAPModification> rawModifications;
+  private List<RawModification> rawModifications;
 
   // The set of modifications for this modify operation.
   private List<Modification> modifications;
@@ -179,7 +177,7 @@
   public ModifyOperation(ClientConnection clientConnection, long operationID,
                          int messageID, List<Control> requestControls,
                          ByteString rawEntryDN,
-                         List<LDAPModification> rawModifications)
+                         List<RawModification> rawModifications)
   {
     super(clientConnection, operationID, messageID, requestControls);
 
@@ -226,7 +224,7 @@
 
     rawEntryDN = new ASN1OctetString(entryDN.toString());
 
-    rawModifications = new ArrayList<LDAPModification>(modifications.size());
+    rawModifications = new ArrayList<RawModification>(modifications.size());
     for (Modification m : modifications)
     {
       rawModifications.add(new LDAPModification(m.getModificationType(),
@@ -299,7 +297,7 @@
    * @return  The set of raw, unprocessed modifications as included in the
    *          client request.
    */
-  public final List<LDAPModification> getRawModifications()
+  public final List<RawModification> getRawModifications()
   {
     return rawModifications;
   }
@@ -313,7 +311,7 @@
    * @param  rawModification  The modification to add to the set of raw
    *                          modifications for this modify operation.
    */
-  public final void addRawModification(LDAPModification rawModification)
+  public final void addRawModification(RawModification rawModification)
   {
     rawModifications.add(rawModification);
 
@@ -327,7 +325,7 @@
    *
    * @param  rawModifications  The raw modifications for this modify operation.
    */
-  public final void setRawModifications(List<LDAPModification> rawModifications)
+  public final void setRawModifications(List<RawModification> rawModifications)
   {
     this.rawModifications = rawModifications;
 
@@ -749,7 +747,7 @@
       if (modifications == null)
       {
         modifications = new ArrayList<Modification>(rawModifications.size());
-        for (LDAPModification m : rawModifications)
+        for (RawModification m : rawModifications)
         {
           try
           {
@@ -1239,7 +1237,7 @@
                        ErrorLogSeverity.SEVERE_ERROR,
                        MSGID_MODIFY_SYNCH_CONFLICT_RESOLUTION_FAILED,
                        getConnectionID(), getOperationID(),
-                       stackTraceToSingleLineString(de));
+                       getExceptionMessage(de));
 
               setResponseData(de);
               break modifyProcessing;
@@ -2554,7 +2552,7 @@
                 logError(ErrorLogCategory.SYNCHRONIZATION,
                          ErrorLogSeverity.SEVERE_ERROR,
                          MSGID_MODIFY_SYNCH_PREOP_FAILED, getConnectionID(),
-                         getOperationID(), stackTraceToSingleLineString(de));
+                         getOperationID(), getExceptionMessage(de));
 
                 setResponseData(de);
                 break modifyProcessing;
@@ -2784,7 +2782,7 @@
             logError(ErrorLogCategory.SYNCHRONIZATION,
                      ErrorLogSeverity.SEVERE_ERROR,
                      MSGID_MODIFY_SYNCH_POSTOP_FAILED, getConnectionID(),
-                     getOperationID(), stackTraceToSingleLineString(de));
+                     getOperationID(), getExceptionMessage(de));
 
             setResponseData(de);
             break;
@@ -2841,7 +2839,7 @@
           }
 
           int    msgID   = MSGID_MODIFY_ERROR_NOTIFYING_CHANGE_LISTENER;
-          String message = getMessage(msgID, stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, getExceptionMessage(e));
           logError(ErrorLogCategory.CORE_SERVER, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
         }
@@ -2880,7 +2878,7 @@
 
           int    msgID   = MSGID_MODIFY_ERROR_NOTIFYING_PERSISTENT_SEARCH;
           String message = getMessage(msgID, String.valueOf(persistentSearch),
-                                      stackTraceToSingleLineString(e));
+                                      getExceptionMessage(e));
           logError(ErrorLogCategory.CORE_SERVER, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
 
@@ -2953,7 +2951,7 @@
    * {@inheritDoc}
    */
   @Override()
-  boolean setCancelRequest(CancelRequest cancelRequest)
+  protected boolean setCancelRequest(CancelRequest cancelRequest)
   {
     this.cancelRequest = cancelRequest;
     return true;
diff --git a/opends/src/server/org/opends/server/core/PasswordPolicy.java b/opends/src/server/org/opends/server/core/PasswordPolicy.java
index c58270f..54efbcb 100644
--- a/opends/src/server/org/opends/server/core/PasswordPolicy.java
+++ b/opends/src/server/org/opends/server/core/PasswordPolicy.java
@@ -323,7 +323,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_PASSWORD_ATTRIBUTE;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -392,7 +392,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_DEFAULT_STORAGE_SCHEMES;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -423,7 +423,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_DEPRECATED_STORAGE_SCHEMES;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -476,7 +476,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_PASSWORD_VALIDATORS;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -525,7 +525,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_NOTIFICATION_HANDLERS;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -554,7 +554,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_ALLOW_USER_PW_CHANGES;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -583,7 +583,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_REQUIRE_CURRENT_PW;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -612,7 +612,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_FORCE_CHANGE_ON_ADD;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -641,7 +641,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_FORCE_CHANGE_ON_RESET;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -671,7 +671,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_SKIP_ADMIN_VALIDATION;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -714,7 +714,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_PASSWORD_GENERATOR;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -743,7 +743,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_REQUIRE_SECURE_AUTH;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -773,7 +773,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_REQUIRE_SECURE_CHANGES;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -802,7 +802,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_ALLOW_MULTIPLE_PW_VALUES;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -831,7 +831,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_ALLOW_PREENCODED;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -861,7 +861,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_MIN_AGE;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -891,7 +891,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_MAX_AGE;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -922,7 +922,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_MAX_RESET_AGE;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -952,7 +952,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_WARNING_INTERVAL;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -982,7 +982,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_EXPIRE_WITHOUT_WARNING;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -1023,7 +1023,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_ALLOW_EXPIRED_CHANGES;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -1052,7 +1052,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_GRACE_LOGIN_COUNT;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -1082,7 +1082,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_LOCKOUT_FAILURE_COUNT;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -1113,7 +1113,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_LOCKOUT_DURATION;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -1145,7 +1145,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_FAILURE_EXPIRATION;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -1193,7 +1193,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_REQUIRE_CHANGE_BY_TIME;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -1240,7 +1240,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_LAST_LOGIN_TIME_ATTR;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -1292,7 +1292,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_LAST_LOGIN_TIME_FORMAT;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -1349,7 +1349,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_PREVIOUS_LAST_LOGIN_TIME_FORMAT;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -1380,7 +1380,7 @@
 
       msgID = MSGID_PWPOLICY_CANNOT_DETERMINE_IDLE_LOCKOUT_INTERVAL;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
diff --git a/opends/src/server/org/opends/server/core/PasswordPolicyState.java b/opends/src/server/org/opends/server/core/PasswordPolicyState.java
index a518cc8..5cf0f70 100644
--- a/opends/src/server/org/opends/server/core/PasswordPolicyState.java
+++ b/opends/src/server/org/opends/server/core/PasswordPolicyState.java
@@ -46,7 +46,6 @@
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.ldap.LDAPAttribute;
-import org.opends.server.protocols.ldap.LDAPModification;
 import org.opends.server.schema.AuthPasswordSyntax;
 import org.opends.server.schema.GeneralizedTimeSyntax;
 import org.opends.server.schema.UserPasswordSyntax;
@@ -62,6 +61,8 @@
 import org.opends.server.types.Entry;
 import org.opends.server.types.Modification;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.Operation;
+import org.opends.server.types.RawModification;
 import org.opends.server.types.ResultCode;
 import org.opends.server.util.TimeThread;
 
@@ -3596,11 +3597,11 @@
 
 
     // Convert the set of modifications to a set of LDAP modifications.
-    ArrayList<LDAPModification> modList = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> modList = new ArrayList<RawModification>();
     for (Modification m : modifications)
     {
-      modList.add(new LDAPModification(m.getModificationType(),
-                                       new LDAPAttribute(m.getAttribute())));
+      modList.add(RawModification.create(m.getModificationType(),
+                       new LDAPAttribute(m.getAttribute())));
     }
 
     InternalClientConnection conn =
@@ -3619,3 +3620,4 @@
     }
   }
 }
+
diff --git a/opends/src/server/org/opends/server/core/PersistentSearch.java b/opends/src/server/org/opends/server/core/PersistentSearch.java
index fe02300..0069000 100644
--- a/opends/src/server/org/opends/server/core/PersistentSearch.java
+++ b/opends/src/server/org/opends/server/core/PersistentSearch.java
@@ -34,15 +34,14 @@
 import org.opends.server.controls.EntryChangeNotificationControl;
 import org.opends.server.controls.PersistentSearchChangeType;
 import org.opends.server.types.Control;
+import org.opends.server.types.DebugLogLevel;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
 import org.opends.server.types.SearchFilter;
 import org.opends.server.types.SearchScope;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
-import org.opends.server.types.DebugLogLevel;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 
 
 
@@ -52,9 +51,6 @@
  */
 public class PersistentSearch
 {
-
-
-
   // Indicates whether entries returned should include the entry change
   // notification control.
   private boolean returnECs;
diff --git a/opends/src/server/org/opends/server/core/PluginConfigManager.java b/opends/src/server/org/opends/server/core/PluginConfigManager.java
index 67beb5a..829b63e 100644
--- a/opends/src/server/org/opends/server/core/PluginConfigManager.java
+++ b/opends/src/server/org/opends/server/core/PluginConfigManager.java
@@ -70,6 +70,7 @@
 import org.opends.server.types.IntermediateResponse;
 import org.opends.server.types.LDIFExportConfig;
 import org.opends.server.types.LDIFImportConfig;
+import org.opends.server.types.Operation;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchResultEntry;
 import org.opends.server.types.SearchResultReference;
diff --git a/opends/src/server/org/opends/server/core/RootDNConfigManager.java b/opends/src/server/org/opends/server/core/RootDNConfigManager.java
index 8369e87..94bd55a 100644
--- a/opends/src/server/org/opends/server/core/RootDNConfigManager.java
+++ b/opends/src/server/org/opends/server/core/RootDNConfigManager.java
@@ -193,7 +193,7 @@
       }
 
       msgID = MSGID_CONFIG_ROOTDN_ERROR_DETERMINING_ROOT_PRIVILEGES;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -348,7 +348,7 @@
 
       msgID = MSGID_CONFIG_ROOTDN_CANNOT_PARSE_ALTERNATE_BIND_DNS;
       String message = getMessage(msgID, String.valueOf(configEntry.getDN()),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       unacceptableReason.append(message);
       return false;
     }
@@ -401,7 +401,7 @@
       }
 
       msgID = MSGID_CONFIG_ROOTDN_CANNOT_PARSE_ALTERNATE_BIND_DNS;
-      messages.add(getMessage(msgID, stackTraceToSingleLineString(e)));
+      messages.add(getMessage(msgID, getExceptionMessage(e)));
 
       resultCode = ResultCode.INVALID_ATTRIBUTE_SYNTAX;
     }
@@ -543,7 +543,7 @@
       }
 
       msgID = MSGID_CONFIG_ROOTDN_CANNOT_PARSE_ALTERNATE_BIND_DNS;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       unacceptableReason.append(message);
       return false;
     }
@@ -595,7 +595,7 @@
       }
 
       msgID = MSGID_CONFIG_ROOTDN_CANNOT_PARSE_ALTERNATE_BIND_DNS;
-      messages.add(getMessage(msgID, stackTraceToSingleLineString(e)));
+      messages.add(getMessage(msgID, getExceptionMessage(e)));
 
       resultCode = ResultCode.INVALID_ATTRIBUTE_SYNTAX;
     }
@@ -811,7 +811,7 @@
       }
 
       msgID = MSGID_CONFIG_ROOTDN_ERROR_DETERMINING_ROOT_PRIVILEGES;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       unacceptableReasons.add(message);
       return false;
     }
@@ -905,7 +905,7 @@
       }
 
       msgID = MSGID_CONFIG_ROOTDN_ERROR_DETERMINING_ROOT_PRIVILEGES;
-      messages.add(getMessage(msgID, stackTraceToSingleLineString(e)));
+      messages.add(getMessage(msgID, getExceptionMessage(e)));
     }
 
 
diff --git a/opends/src/server/org/opends/server/core/SchemaConfigManager.java b/opends/src/server/org/opends/server/core/SchemaConfigManager.java
index d1c3347..5009aa0 100644
--- a/opends/src/server/org/opends/server/core/SchemaConfigManager.java
+++ b/opends/src/server/org/opends/server/core/SchemaConfigManager.java
@@ -279,7 +279,7 @@
 
         msgID = MSGID_CONFIG_SCHEMA_MR_UNABLE_TO_DETERMINE_ENABLED_STATE;
         String message = getMessage(msgID, String.valueOf(mrEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         continue;
@@ -324,7 +324,7 @@
 
         msgID = MSGID_CONFIG_SCHEMA_MR_CANNOT_GET_CLASS;
         String message = getMessage(msgID, String.valueOf(mrEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         continue;
@@ -346,7 +346,7 @@
         msgID = MSGID_CONFIG_SCHEMA_MR_CANNOT_INSTANTIATE;
         String message = getMessage(msgID, String.valueOf(className),
                                     String.valueOf(mrEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         continue;
@@ -368,7 +368,7 @@
         msgID = MSGID_CONFIG_SCHEMA_MR_CANNOT_INITIALIZE;
         String message = getMessage(msgID, String.valueOf(className),
                                     String.valueOf(mrEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         continue;
@@ -523,7 +523,7 @@
 
         msgID = MSGID_CONFIG_SCHEMA_SYNTAX_UNABLE_TO_DETERMINE_ENABLED_STATE;
         String message = getMessage(msgID, String.valueOf(syntaxEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         continue;
@@ -567,7 +567,7 @@
 
         msgID = MSGID_CONFIG_SCHEMA_SYNTAX_CANNOT_GET_CLASS;
         String message = getMessage(msgID, String.valueOf(syntaxEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         continue;
@@ -589,7 +589,7 @@
         msgID = MSGID_CONFIG_SCHEMA_SYNTAX_CANNOT_INSTANTIATE;
         String message = getMessage(msgID, String.valueOf(className),
                                     String.valueOf(syntaxEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         continue;
@@ -611,7 +611,7 @@
         msgID = MSGID_CONFIG_SCHEMA_SYNTAX_CANNOT_INITIALIZE;
         String message = getMessage(msgID, String.valueOf(className),
                                     String.valueOf(syntaxEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         continue;
@@ -730,7 +730,7 @@
 
       int    msgID   = MSGID_CONFIG_SCHEMA_CANNOT_LIST_FILES;
       String message = getMessage(msgID, schemaDirPath,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -836,7 +836,7 @@
 
       int    msgID   = MSGID_CONFIG_SCHEMA_CANNOT_OPEN_FILE;
       String message = getMessage(msgID, schemaFile, schemaDirPath,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
 
       if (failOnError)
       {
@@ -872,7 +872,7 @@
 
       int    msgID   = MSGID_CONFIG_SCHEMA_CANNOT_READ_LDIF_ENTRY;
       String message = getMessage(msgID, schemaFile, schemaDirPath,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
 
       if (failOnError)
       {
@@ -1211,7 +1211,7 @@
             int    msgID   = MSGID_CONFIG_SCHEMA_CANNOT_PARSE_ATTR_TYPE;
             String message = getMessage(msgID, schemaFile,
                                         v.getStringValue() + ":  " +
-                                             stackTraceToSingleLineString(e));
+                                        getExceptionMessage(e));
             if (failOnError)
             {
               throw new ConfigException(msgID, message, e);
@@ -1310,7 +1310,7 @@
             int    msgID   = MSGID_CONFIG_SCHEMA_CANNOT_PARSE_OC;
             String message = getMessage(msgID, schemaFile,
                                         v.getStringValue() + ":  " +
-                                             stackTraceToSingleLineString(e));
+                                        getExceptionMessage(e));
 
             if (failOnError)
             {
@@ -1409,7 +1409,7 @@
             int    msgID   = MSGID_CONFIG_SCHEMA_CANNOT_PARSE_NAME_FORM;
             String message = getMessage(msgID, schemaFile,
                                         v.getStringValue() + ":  " +
-                                             stackTraceToSingleLineString(e));
+                                        getExceptionMessage(e));
 
             if (failOnError)
             {
@@ -1508,7 +1508,7 @@
             int    msgID   = MSGID_CONFIG_SCHEMA_CANNOT_PARSE_DCR;
             String message = getMessage(msgID, schemaFile,
                                         v.getStringValue() + ":  " +
-                                             stackTraceToSingleLineString(e));
+                                        getExceptionMessage(e));
 
             if (failOnError)
             {
@@ -1608,7 +1608,7 @@
             int    msgID   = MSGID_CONFIG_SCHEMA_CANNOT_PARSE_DSR;
             String message = getMessage(msgID, schemaFile,
                                         v.getStringValue() + ":  " +
-                                             stackTraceToSingleLineString(e));
+                                        getExceptionMessage(e));
 
             if (failOnError)
             {
@@ -1708,7 +1708,7 @@
             int    msgID   = MSGID_CONFIG_SCHEMA_CANNOT_PARSE_MRU;
             String message = getMessage(msgID, schemaFile,
                                         v.getStringValue() + ":  " +
-                                             stackTraceToSingleLineString(e));
+                                        getExceptionMessage(e));
 
             if (failOnError)
             {
diff --git a/opends/src/server/org/opends/server/core/SearchOperation.java b/opends/src/server/org/opends/server/core/SearchOperation.java
index d4c3d49..47d6c20 100644
--- a/opends/src/server/org/opends/server/core/SearchOperation.java
+++ b/opends/src/server/org/opends/server/core/SearchOperation.java
@@ -49,7 +49,6 @@
 import org.opends.server.controls.ProxiedAuthV1Control;
 import org.opends.server.controls.ProxiedAuthV2Control;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
@@ -59,14 +58,18 @@
 import org.opends.server.types.CancelRequest;
 import org.opends.server.types.CancelResult;
 import org.opends.server.types.Control;
+import org.opends.server.types.DebugLogLevel;
 import org.opends.server.types.DereferencePolicy;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DisconnectReason;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
 import org.opends.server.types.FilterType;
+import org.opends.server.types.LDAPException;
+import org.opends.server.types.Operation;
 import org.opends.server.types.OperationType;
 import org.opends.server.types.Privilege;
+import org.opends.server.types.RawFilter;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchFilter;
 import org.opends.server.types.SearchResultEntry;
@@ -82,9 +85,7 @@
 
 import static org.opends.server.core.CoreConstants.*;
 import static org.opends.server.loggers.Access.*;
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
-import org.opends.server.types.DebugLogLevel;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.CoreMessages.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.util.ServerConstants.*;
@@ -149,9 +150,6 @@
   // The time limit for the search operation.
   private int timeLimit;
 
-  // The raw, unprocessed filter as included in the request from the client.
-  private LDAPFilter rawFilter;
-
   // The set of attributes that should be returned in matching entries.
   private LinkedHashSet<String> attributes;
 
@@ -173,6 +171,9 @@
   // The persistent search associated with this search operation.
   private PersistentSearch persistentSearch;
 
+  // The raw, unprocessed filter as included in the request from the client.
+  private RawFilter rawFilter;
+
   // The search filter for the search operation.
   private SearchFilter filter;
 
@@ -207,7 +208,7 @@
                          int messageID, List<Control> requestControls,
                          ByteString rawBaseDN, SearchScope scope,
                          DereferencePolicy derefPolicy, int sizeLimit,
-                         int timeLimit, boolean typesOnly, LDAPFilter rawFilter,
+                         int timeLimit, boolean typesOnly, RawFilter rawFilter,
                          LinkedHashSet<String> attributes)
   {
     super(clientConnection, operationID, messageID, requestControls);
@@ -575,7 +576,7 @@
    * @return  The raw, unprocessed search filter as included in the request from
    *          the client.
    */
-  public final LDAPFilter getRawFilter()
+  public final RawFilter getRawFilter()
   {
     return rawFilter;
   }
@@ -589,7 +590,7 @@
    * @param  rawFilter  The raw, unprocessed search filter as included in the
    *                    request from the client.
    */
-  public final void setRawFilter(LDAPFilter rawFilter)
+  public final void setRawFilter(RawFilter rawFilter)
   {
     this.rawFilter = rawFilter;
 
@@ -2091,7 +2092,7 @@
         setResultCode(DirectoryServer.getServerErrorResultCode());
 
         int msgID = MSGID_SEARCH_BACKEND_EXCEPTION;
-        appendErrorMessage(getMessage(msgID, stackTraceToSingleLineString(e)));
+        appendErrorMessage(getMessage(msgID, getExceptionMessage(e)));
 
         if (persistentSearch != null)
         {
@@ -2271,7 +2272,7 @@
    * {@inheritDoc}
    */
   @Override()
-  boolean setCancelRequest(CancelRequest cancelRequest)
+  protected boolean setCancelRequest(CancelRequest cancelRequest)
   {
     this.cancelRequest = cancelRequest;
     return true;
diff --git a/opends/src/server/org/opends/server/core/UnbindOperation.java b/opends/src/server/org/opends/server/core/UnbindOperation.java
index 3f5f2e5..336a745 100644
--- a/opends/src/server/org/opends/server/core/UnbindOperation.java
+++ b/opends/src/server/org/opends/server/core/UnbindOperation.java
@@ -36,6 +36,7 @@
 import org.opends.server.types.CancelResult;
 import org.opends.server.types.Control;
 import org.opends.server.types.DisconnectReason;
+import org.opends.server.types.Operation;
 import org.opends.server.types.OperationType;
 import org.opends.server.types.operation.PostOperationUnbindOperation;
 import org.opends.server.types.operation.PreParseUnbindOperation;
@@ -281,7 +282,7 @@
    * {@inheritDoc}
    */
   @Override()
-  boolean setCancelRequest(CancelRequest cancelRequest)
+  protected boolean setCancelRequest(CancelRequest cancelRequest)
   {
     // Unbind operations cannot be canceled.
     return false;
diff --git a/opends/src/server/org/opends/server/extensions/AttributeValuePasswordValidator.java b/opends/src/server/org/opends/server/extensions/AttributeValuePasswordValidator.java
index d4260a0..5fde16c 100644
--- a/opends/src/server/org/opends/server/extensions/AttributeValuePasswordValidator.java
+++ b/opends/src/server/org/opends/server/extensions/AttributeValuePasswordValidator.java
@@ -35,13 +35,13 @@
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.AttributeValuePasswordValidatorCfg;
 import org.opends.server.api.PasswordValidator;
-import org.opends.server.core.Operation;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.Entry;
+import org.opends.server.types.Operation;
 import org.opends.server.types.ResultCode;
 
 import static org.opends.server.messages.ExtensionsMessages.*;
diff --git a/opends/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandler.java b/opends/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandler.java
index 27fc571..3b21c73 100644
--- a/opends/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandler.java
+++ b/opends/src/server/org/opends/server/extensions/CRAMMD5SASLMechanismHandler.java
@@ -155,7 +155,7 @@
       }
 
       int msgID = MSGID_SASLCRAMMD5_CANNOT_GET_MESSAGE_DIGEST;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
diff --git a/opends/src/server/org/opends/server/extensions/CancelExtendedOperation.java b/opends/src/server/org/opends/server/extensions/CancelExtendedOperation.java
index a60733a..3ed0dcc 100644
--- a/opends/src/server/org/opends/server/extensions/CancelExtendedOperation.java
+++ b/opends/src/server/org/opends/server/extensions/CancelExtendedOperation.java
@@ -156,7 +156,7 @@
         operation.setResultCode(ResultCode.PROTOCOL_ERROR);
 
         int    msgID   = MSGID_EXTOP_CANCEL_CANNOT_DECODE_REQUEST_VALUE;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         operation.appendErrorMessage(message);
 
         return;
diff --git a/opends/src/server/org/opends/server/extensions/CharacterSetPasswordValidator.java b/opends/src/server/org/opends/server/extensions/CharacterSetPasswordValidator.java
index ea655c7..65a7b8a 100644
--- a/opends/src/server/org/opends/server/extensions/CharacterSetPasswordValidator.java
+++ b/opends/src/server/org/opends/server/extensions/CharacterSetPasswordValidator.java
@@ -38,11 +38,11 @@
 import org.opends.server.admin.std.server.CharacterSetPasswordValidatorCfg;
 import org.opends.server.api.PasswordValidator;
 import org.opends.server.config.ConfigException;
-import org.opends.server.core.Operation;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.DirectoryConfig;
 import org.opends.server.types.Entry;
+import org.opends.server.types.Operation;
 import org.opends.server.types.ResultCode;
 
 import static org.opends.server.messages.ExtensionsMessages.*;
@@ -300,7 +300,7 @@
     catch (Exception e)
     {
       resultCode = DirectoryConfig.getServerErrorResultCode();
-      messages.add(stackTraceToSingleLineString(e));
+      messages.add(getExceptionMessage(e));
     }
 
     return new ConfigChangeResult(resultCode, adminActionRequired, messages);
diff --git a/opends/src/server/org/opends/server/extensions/ConfigFileHandler.java b/opends/src/server/org/opends/server/extensions/ConfigFileHandler.java
index 4a159c6..584d5b0 100644
--- a/opends/src/server/org/opends/server/extensions/ConfigFileHandler.java
+++ b/opends/src/server/org/opends/server/extensions/ConfigFileHandler.java
@@ -703,7 +703,7 @@
 
       int    msgID   = MSGID_CONFIG_CANNOT_REGISTER_AS_PRIVATE_SUFFIX;
       String message = getMessage(msgID, configRootEntry.getDN(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
   }
@@ -1142,7 +1142,7 @@
         int    msgID   = MSGID_CONFIG_FILE_ADD_FAILED;
         String message = getMessage(msgID, String.valueOf(entryDN),
                                     String.valueOf(parentDN),
-                                    stackTraceToSingleLineString(ce));
+                                    getExceptionMessage(ce));
         throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                      message, msgID);
       }
@@ -1290,7 +1290,7 @@
         int    msgID   = MSGID_CONFIG_FILE_DELETE_FAILED;
         String message = getMessage(msgID, String.valueOf(entryDN),
                                     String.valueOf(parentEntry.getDN()),
-                                    stackTraceToSingleLineString(ce));
+                                    getExceptionMessage(ce));
         throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                      message, msgID);
       }
@@ -2363,7 +2363,7 @@
       }
 
       msgID   = MSGID_CONFIG_BACKUP_CANNOT_DETERMINE_CONFIG_FILE_LOCATION;
-      message = getMessage(msgID, stackTraceToSingleLineString(e));
+      message = getMessage(msgID, getExceptionMessage(e));
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
     }
@@ -2511,7 +2511,7 @@
 
       msgID   = MSGID_CONFIG_BACKUP_CANNOT_CLOSE_ZIP_STREAM;
       message = getMessage(msgID, filename, backupDirectory.getPath(),
-                           stackTraceToSingleLineString(e));
+                           getExceptionMessage(e));
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
     }
@@ -2839,7 +2839,7 @@
         int    msgID   = MSGID_CONFIG_RESTORE_CANNOT_BACKUP_EXISTING_CONFIG;
         String message = getMessage(msgID, backupID, configDirPath,
                                     String.valueOf(backupDirPath),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                      message, msgID, e);
       }
@@ -2876,7 +2876,7 @@
 
         int    msgID   = MSGID_CONFIG_RESTORE_CANNOT_CREATE_CONFIG_DIRECTORY;
         String message = getMessage(msgID, backupID, configDirPath,
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                      message, msgID, e);
       }
@@ -3041,7 +3041,7 @@
     {
       int    msgID   = MSGID_CONFIG_RESTORE_ERROR_ON_ZIP_STREAM_CLOSE;
       String message = getMessage(msgID, backupID, backupFile.getPath(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
     }
diff --git a/opends/src/server/org/opends/server/extensions/DictionaryPasswordValidator.java b/opends/src/server/org/opends/server/extensions/DictionaryPasswordValidator.java
index 06642a5..99f9746 100644
--- a/opends/src/server/org/opends/server/extensions/DictionaryPasswordValidator.java
+++ b/opends/src/server/org/opends/server/extensions/DictionaryPasswordValidator.java
@@ -40,13 +40,13 @@
 import org.opends.server.admin.std.server.DictionaryPasswordValidatorCfg;
 import org.opends.server.api.PasswordValidator;
 import org.opends.server.config.ConfigException;
-import org.opends.server.core.Operation;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.DebugLogLevel;
 import org.opends.server.types.DirectoryConfig;
 import org.opends.server.types.Entry;
 import org.opends.server.types.InitializationException;
+import org.opends.server.types.Operation;
 import org.opends.server.types.ResultCode;
 
 import static org.opends.server.loggers.debug.DebugLogger.*;
@@ -257,7 +257,7 @@
     }
     catch (Exception e)
     {
-      unacceptableReasons.add(stackTraceToSingleLineString(e));
+      unacceptableReasons.add(getExceptionMessage(e));
       return false;
     }
 
@@ -287,7 +287,7 @@
     catch (Exception e)
     {
       resultCode = DirectoryConfig.getServerErrorResultCode();
-      messages.add(stackTraceToSingleLineString(e));
+      messages.add(getExceptionMessage(e));
     }
 
     return new ConfigChangeResult(resultCode, adminActionRequired, messages);
diff --git a/opends/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java b/opends/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java
index a8ccc93..91f9df0 100644
--- a/opends/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java
+++ b/opends/src/server/org/opends/server/extensions/DigestMD5SASLMechanismHandler.java
@@ -159,7 +159,7 @@
       }
 
       int    msgID   = MSGID_SASLDIGESTMD5_CANNOT_GET_MESSAGE_DIGEST;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -369,7 +369,7 @@
       // but we want to log it anyway.
       logError(ErrorLogCategory.EXTENSIONS, ErrorLogSeverity.SEVERE_WARNING,
                MSGID_SASLDIGESTMD5_CANNOT_PARSE_ISO_CREDENTIALS,
-               responseCharset, stackTraceToSingleLineString(e));
+               responseCharset, getExceptionMessage(e));
     }
 
     if ((credString == null) ||
@@ -392,7 +392,7 @@
         bindOperation.setResultCode(ResultCode.INVALID_CREDENTIALS);
 
         int    msgID   = MSGID_SASLDIGESTMD5_CANNOT_PARSE_UTF8_CREDENTIALS;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         bindOperation.setAuthFailureReason(msgID, message);
         return;
       }
@@ -528,7 +528,7 @@
           bindOperation.setResultCode(ResultCode.INVALID_CREDENTIALS);
 
           int msgID = MSGID_SASLDIGESTMD5_CANNOT_DECODE_STORED_NONCE_COUNT;
-          String message = getMessage(msgID, stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, getExceptionMessage(e));
           bindOperation.setAuthFailureReason(msgID, message);
           return;
         }
@@ -605,7 +605,7 @@
           }
 
           int    msgID   = MSGID_SASLDIGESTMD5_CANNOT_PARSE_RESPONSE_DIGEST;
-          String message = getMessage(msgID, stackTraceToSingleLineString(pe));
+          String message = getMessage(msgID, getExceptionMessage(pe));
           bindOperation.setAuthFailureReason(msgID, message);
           return;
         }
@@ -1075,7 +1075,7 @@
         logError(ErrorLogCategory.EXTENSIONS,
                  ErrorLogSeverity.SEVERE_WARNING,
                  MSGID_SASLDIGESTMD5_CANNOT_GENERATE_RESPONSE_DIGEST,
-                 stackTraceToSingleLineString(e));
+                 getExceptionMessage(e));
         continue;
       }
 
@@ -1120,7 +1120,7 @@
       bindOperation.setResultCode(ResultCode.INVALID_CREDENTIALS);
 
       int    msgID   = MSGID_SASLDIGESTMD5_CANNOT_GENERATE_RESPONSE_AUTH_DIGEST;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       bindOperation.setAuthFailureReason(msgID, message);
       return;
     }
diff --git a/opends/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandler.java b/opends/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandler.java
index 49aeb46..6f4be0a 100644
--- a/opends/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandler.java
+++ b/opends/src/server/org/opends/server/extensions/ErrorLogAccountStatusNotificationHandler.java
@@ -160,7 +160,7 @@
 
       msgID = MSGID_ERRORLOG_ACCTNOTHANDLER_CANNOT_GET_NOTIFICATION_TYPES;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -299,7 +299,7 @@
 
       msgID = MSGID_ERRORLOG_ACCTNOTHANDLER_CANNOT_GET_NOTIFICATION_TYPES;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       unacceptableReasons.add(message);
       return false;
     }
@@ -381,7 +381,7 @@
 
       msgID = MSGID_ERRORLOG_ACCTNOTHANDLER_CANNOT_GET_NOTIFICATION_TYPES;
       messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              stackTraceToSingleLineString(e)));
+                              getExceptionMessage(e)));
     }
 
 
diff --git a/opends/src/server/org/opends/server/extensions/ExternalSASLMechanismHandler.java b/opends/src/server/org/opends/server/extensions/ExternalSASLMechanismHandler.java
index cea4f35..7cecac1 100644
--- a/opends/src/server/org/opends/server/extensions/ExternalSASLMechanismHandler.java
+++ b/opends/src/server/org/opends/server/extensions/ExternalSASLMechanismHandler.java
@@ -367,7 +367,7 @@
             int    msgID   = MSGID_SASLEXTERNAL_CANNOT_VALIDATE_CERT;
             String message = getMessage(msgID,
                                         String.valueOf(userEntry.getDN()),
-                                        stackTraceToSingleLineString(e));
+                                        getExceptionMessage(e));
             bindOperation.setAuthFailureReason(msgID, message);
             return;
           }
@@ -417,7 +417,7 @@
             int    msgID   = MSGID_SASLEXTERNAL_CANNOT_VALIDATE_CERT;
             String message = getMessage(msgID,
                                         String.valueOf(userEntry.getDN()),
-                                        stackTraceToSingleLineString(e));
+                                        getExceptionMessage(e));
             bindOperation.setAuthFailureReason(msgID, message);
             return;
           }
diff --git a/opends/src/server/org/opends/server/extensions/FIFOEntryCache.java b/opends/src/server/org/opends/server/extensions/FIFOEntryCache.java
index fd4c132..70c174f 100644
--- a/opends/src/server/org/opends/server/extensions/FIFOEntryCache.java
+++ b/opends/src/server/org/opends/server/extensions/FIFOEntryCache.java
@@ -238,7 +238,7 @@
       // Log an error message.
       logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
                MSGID_FIFOCACHE_CANNOT_DETERMINE_MAX_MEMORY_PCT,
-               String.valueOf(configEntryDN), stackTraceToSingleLineString(e),
+               String.valueOf(configEntryDN), getExceptionMessage(e),
                maxMemoryPercent);
     }
 
@@ -276,7 +276,7 @@
       // Log an error message.
       logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
                MSGID_FIFOCACHE_CANNOT_DETERMINE_MAX_ENTRIES,
-               String.valueOf(configEntryDN), stackTraceToSingleLineString(e));
+               String.valueOf(configEntryDN), getExceptionMessage(e));
     }
 
 
@@ -311,7 +311,7 @@
       // Log an error message.
       logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
                MSGID_FIFOCACHE_CANNOT_DETERMINE_LOCK_TIMEOUT,
-               String.valueOf(configEntryDN), stackTraceToSingleLineString(e),
+               String.valueOf(configEntryDN), getExceptionMessage(e),
                lockTimeout);
     }
 
@@ -359,7 +359,7 @@
                        ErrorLogSeverity.SEVERE_WARNING,
                        MSGID_FIFOCACHE_CANNOT_DECODE_INCLUDE_FILTER,
                        String.valueOf(configEntryDN), filterString,
-                       stackTraceToSingleLineString(e));
+                       getExceptionMessage(e));
             }
           }
 
@@ -383,7 +383,7 @@
       // Log an error message.
       logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
                MSGID_FIFOCACHE_CANNOT_DETERMINE_INCLUDE_FILTERS,
-               String.valueOf(configEntryDN), stackTraceToSingleLineString(e));
+               String.valueOf(configEntryDN), getExceptionMessage(e));
     }
 
 
@@ -430,7 +430,7 @@
                        ErrorLogSeverity.SEVERE_WARNING,
                        MSGID_FIFOCACHE_CANNOT_DECODE_EXCLUDE_FILTER,
                        String.valueOf(configEntryDN), filterString,
-                       stackTraceToSingleLineString(e));
+                       getExceptionMessage(e));
             }
           }
 
@@ -454,7 +454,7 @@
       // Log an error message.
       logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
                MSGID_FIFOCACHE_CANNOT_DETERMINE_EXCLUDE_FILTERS,
-               String.valueOf(configEntryDN), stackTraceToSingleLineString(e));
+               String.valueOf(configEntryDN), getExceptionMessage(e));
     }
   }
 
@@ -1661,7 +1661,7 @@
       // An error occurred, so the provided value must not be valid.
       msgID = MSGID_FIFOCACHE_INVALID_MAX_MEMORY_PCT;
       unacceptableReasons.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                         stackTraceToSingleLineString(e)));
+                                         getExceptionMessage(e)));
       configIsAcceptable = false;
     }
 
@@ -1688,7 +1688,7 @@
       // An error occurred, so the provided value must not be valid.
       msgID = MSGID_FIFOCACHE_INVALID_MAX_ENTRIES;
       unacceptableReasons.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                         stackTraceToSingleLineString(e)));
+                                         getExceptionMessage(e)));
       configIsAcceptable = false;
     }
 
@@ -1715,7 +1715,7 @@
       // An error occurred, so the provided value must not be valid.
       msgID = MSGID_FIFOCACHE_INVALID_LOCK_TIMEOUT;
       unacceptableReasons.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                         stackTraceToSingleLineString(e)));
+                                         getExceptionMessage(e)));
       configIsAcceptable = false;
     }
 
@@ -1761,7 +1761,7 @@
               unacceptableReasons.add(getMessage(msgID,
                                            String.valueOf(configEntryDN),
                                             filterString,
-                                            stackTraceToSingleLineString(e)));
+                                            getExceptionMessage(e)));
               configIsAcceptable = false;
             }
           }
@@ -1778,7 +1778,7 @@
       // An error occurred, so the provided value must not be valid.
       msgID = MSGID_FIFOCACHE_INVALID_INCLUDE_FILTERS;
       unacceptableReasons.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                         stackTraceToSingleLineString(e)));
+                                         getExceptionMessage(e)));
       configIsAcceptable = false;
     }
 
@@ -1824,7 +1824,7 @@
               unacceptableReasons.add(getMessage(msgID,
                                            String.valueOf(configEntryDN),
                                             filterString,
-                                            stackTraceToSingleLineString(e)));
+                                            getExceptionMessage(e)));
               configIsAcceptable = false;
             }
           }
@@ -1841,7 +1841,7 @@
       // An error occurred, so the provided value must not be valid.
       msgID = MSGID_FIFOCACHE_INVALID_EXCLUDE_FILTERS;
       unacceptableReasons.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                         stackTraceToSingleLineString(e)));
+                                         getExceptionMessage(e)));
       configIsAcceptable = false;
     }
 
@@ -1905,7 +1905,7 @@
       // An error occurred, so the provided value must not be valid.
       msgID = MSGID_FIFOCACHE_INVALID_MAX_MEMORY_PCT;
       messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              stackTraceToSingleLineString(e)));
+                              getExceptionMessage(e)));
       resultCode = ResultCode.CONSTRAINT_VIOLATION;
       configIsAcceptable = false;
     }
@@ -1938,7 +1938,7 @@
       // An error occurred, so the provided value must not be valid.
       msgID = MSGID_FIFOCACHE_INVALID_MAX_ENTRIES;
       messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              stackTraceToSingleLineString(e)));
+                              getExceptionMessage(e)));
 
       if (resultCode == ResultCode.SUCCESS)
       {
@@ -1976,7 +1976,7 @@
       // An error occurred, so the provided value must not be valid.
       msgID = MSGID_FIFOCACHE_INVALID_LOCK_TIMEOUT;
       messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              stackTraceToSingleLineString(e)));
+                              getExceptionMessage(e)));
 
       if (resultCode == ResultCode.SUCCESS)
       {
@@ -2025,7 +2025,7 @@
               msgID = MSGID_FIFOCACHE_INVALID_INCLUDE_FILTER;
               messages.add(getMessage(msgID, String.valueOf(configEntryDN),
                                       filterString,
-                                      stackTraceToSingleLineString(e)));
+                                      getExceptionMessage(e)));
 
               if (resultCode == ResultCode.SUCCESS)
               {
@@ -2048,7 +2048,7 @@
       // An error occurred, so the provided value must not be valid.
       msgID = MSGID_FIFOCACHE_INVALID_INCLUDE_FILTERS;
       messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              stackTraceToSingleLineString(e)));
+                              getExceptionMessage(e)));
 
       if (resultCode == ResultCode.SUCCESS)
       {
@@ -2096,8 +2096,7 @@
               // We couldn't decode this filter, so it isn't valid.
               msgID = MSGID_FIFOCACHE_INVALID_EXCLUDE_FILTER;
               messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                      filterString,
-                                      stackTraceToSingleLineString(e)));
+                                      filterString, getExceptionMessage(e)));
 
               if (resultCode == ResultCode.SUCCESS)
               {
@@ -2120,7 +2119,7 @@
       // An error occurred, so the provided value must not be valid.
       msgID = MSGID_FIFOCACHE_INVALID_EXCLUDE_FILTERS;
       messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              stackTraceToSingleLineString(e)));
+                              getExceptionMessage(e)));
 
       if (resultCode == ResultCode.SUCCESS)
       {
diff --git a/opends/src/server/org/opends/server/extensions/FileBasedKeyManagerProvider.java b/opends/src/server/org/opends/server/extensions/FileBasedKeyManagerProvider.java
index 78e2110..a613338 100644
--- a/opends/src/server/org/opends/server/extensions/FileBasedKeyManagerProvider.java
+++ b/opends/src/server/org/opends/server/extensions/FileBasedKeyManagerProvider.java
@@ -187,7 +187,7 @@
 
       msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_FILE;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -222,7 +222,7 @@
           msgID = MSGID_FILE_KEYMANAGER_INVALID_TYPE;
           String message = getMessage(msgID, String.valueOf(typeStr),
                                       String.valueOf(configEntryDN),
-                                      stackTraceToSingleLineString(kse));
+                                      getExceptionMessage(kse));
           throw new InitializationException(msgID, message);
         }
       }
@@ -245,7 +245,7 @@
 
       msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_TYPE;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -310,7 +310,7 @@
 
         msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_PIN_PROPERTY;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new InitializationException(msgID, message, e);
       }
 
@@ -360,7 +360,7 @@
 
         msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_PIN_ENVAR;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new InitializationException(msgID, message, e);
       }
 
@@ -400,7 +400,7 @@
               msgID = MSGID_FILE_KEYMANAGER_PIN_FILE_CANNOT_READ;
               String message = getMessage(msgID, String.valueOf(fileName),
                                           String.valueOf(configEntryDN),
-                                          stackTraceToSingleLineString(ioe));
+                                          getExceptionMessage(ioe));
               throw new InitializationException(msgID, message, ioe);
             }
 
@@ -438,7 +438,7 @@
 
         msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_PIN_FILE;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new InitializationException(msgID, message, e);
       }
 
@@ -466,7 +466,7 @@
 
         msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_PIN_FROM_ATTR;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new InitializationException(msgID, message, e);
       }
     }
@@ -514,7 +514,7 @@
 
       int msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_FILE;
       String message = getMessage(msgID, String
-          .valueOf(configEntryDN), stackTraceToSingleLineString(e));
+          .valueOf(configEntryDN), getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -531,10 +531,9 @@
         }
 
         int msgID = MSGID_FILE_KEYMANAGER_INVALID_TYPE;
-        String message = getMessage(msgID, String
-            .valueOf(configuration.getKeyStoreType()), String
-            .valueOf(configEntryDN),
-            stackTraceToSingleLineString(kse));
+        String message = getMessage(msgID,
+            String.valueOf(configuration.getKeyStoreType()),
+            String.valueOf(configEntryDN), getExceptionMessage(kse));
         throw new InitializationException(msgID, message);
       }
     } else {
@@ -604,8 +603,7 @@
       } catch (IOException ioe) {
         int msgID = MSGID_FILE_KEYMANAGER_PIN_FILE_CANNOT_READ;
         String message = getMessage(msgID, String.valueOf(fileName),
-            String.valueOf(configEntryDN),
-            stackTraceToSingleLineString(ioe));
+            String.valueOf(configEntryDN), getExceptionMessage(ioe));
         throw new InitializationException(msgID, message, ioe);
       }
 
@@ -675,8 +673,7 @@
       }
 
       int msgID = MSGID_FILE_KEYMANAGER_CANNOT_LOAD;
-      String message = getMessage(msgID, keyStoreFile,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, keyStoreFile, getExceptionMessage(e));
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
     }
@@ -698,8 +695,7 @@
       }
 
       int msgID = MSGID_FILE_KEYMANAGER_CANNOT_CREATE_FACTORY;
-      String message = getMessage(msgID, keyStoreFile,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, keyStoreFile, getExceptionMessage(e));
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
     }
@@ -861,7 +857,7 @@
 
       msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_FILE;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       unacceptableReasons.add(message);
       return false;
     }
@@ -896,7 +892,7 @@
           msgID = MSGID_FILE_KEYMANAGER_INVALID_TYPE;
           String message = getMessage(msgID, String.valueOf(typeStr),
                                       String.valueOf(configEntryDN),
-                                      stackTraceToSingleLineString(kse));
+                                      getExceptionMessage(kse));
           unacceptableReasons.add(message);
           return false;
         }
@@ -911,7 +907,7 @@
 
       msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_TYPE;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       unacceptableReasons.add(message);
       return false;
     }
@@ -960,7 +956,7 @@
 
         msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_PIN_PROPERTY;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         unacceptableReasons.add(message);
         return false;
       }
@@ -1002,7 +998,7 @@
 
         msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_PIN_ENVAR;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         unacceptableReasons.add(message);
         return false;
       }
@@ -1044,7 +1040,7 @@
               msgID = MSGID_FILE_KEYMANAGER_PIN_FILE_CANNOT_READ;
               String message = getMessage(msgID, String.valueOf(fileName),
                                           String.valueOf(configEntryDN),
-                                          stackTraceToSingleLineString(ioe));
+                                          getExceptionMessage(ioe));
               unacceptableReasons.add(message);
               return false;
             }
@@ -1074,7 +1070,7 @@
 
         msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_PIN_FILE;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         unacceptableReasons.add(message);
         return false;
       }
@@ -1103,7 +1099,7 @@
 
         msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_PIN_FROM_ATTR;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         unacceptableReasons.add(message);
         return false;
       }
@@ -1200,7 +1196,7 @@
 
       msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_FILE;
       messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              stackTraceToSingleLineString(e)));
+                              getExceptionMessage(e)));
 
       if (resultCode == ResultCode.SUCCESS)
       {
@@ -1239,7 +1235,7 @@
           msgID = MSGID_FILE_KEYMANAGER_INVALID_TYPE;
           messages.add(getMessage(msgID, String.valueOf(newKeyStoreType),
                                   String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(kse)));
+                                  getExceptionMessage(kse)));
 
           if (resultCode == ResultCode.SUCCESS)
           {
@@ -1257,7 +1253,7 @@
 
       msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_TYPE;
       messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              stackTraceToSingleLineString(e)));
+                              getExceptionMessage(e)));
 
       if (resultCode == ResultCode.SUCCESS)
       {
@@ -1318,7 +1314,7 @@
 
         msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_PIN_PROPERTY;
         messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                stackTraceToSingleLineString(e)));
+                                getExceptionMessage(e)));
 
         if (resultCode == ResultCode.SUCCESS)
         {
@@ -1371,7 +1367,7 @@
 
         msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_PIN_ENVAR;
         messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                stackTraceToSingleLineString(e)));
+                                getExceptionMessage(e)));
 
         if (resultCode == ResultCode.SUCCESS)
         {
@@ -1423,7 +1419,7 @@
               msgID = MSGID_FILE_KEYMANAGER_PIN_FILE_CANNOT_READ;
               messages.add(getMessage(msgID, String.valueOf(fileName),
                                       String.valueOf(configEntryDN),
-                                      stackTraceToSingleLineString(ioe)));
+                                      getExceptionMessage(ioe)));
 
               if (resultCode == ResultCode.SUCCESS)
               {
@@ -1464,7 +1460,7 @@
 
         msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_PIN_FILE;
         messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                stackTraceToSingleLineString(e)));
+                                getExceptionMessage(e)));
 
         if (resultCode == ResultCode.SUCCESS)
         {
@@ -1498,7 +1494,7 @@
 
         msgID = MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_PIN_FROM_ATTR;
         messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                stackTraceToSingleLineString(e)));
+                                getExceptionMessage(e)));
 
         if (resultCode == ResultCode.SUCCESS)
         {
diff --git a/opends/src/server/org/opends/server/extensions/FileBasedTrustManagerProvider.java b/opends/src/server/org/opends/server/extensions/FileBasedTrustManagerProvider.java
index ae1fb0d..0bfa896 100644
--- a/opends/src/server/org/opends/server/extensions/FileBasedTrustManagerProvider.java
+++ b/opends/src/server/org/opends/server/extensions/FileBasedTrustManagerProvider.java
@@ -185,7 +185,7 @@
 
       msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_FILE;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -221,7 +221,7 @@
           msgID = MSGID_FILE_TRUSTMANAGER_INVALID_TYPE;
           String message = getMessage(msgID, String.valueOf(typeStr),
                                       String.valueOf(configEntryDN),
-                                      stackTraceToSingleLineString(kse));
+                                      getExceptionMessage(kse));
           throw new InitializationException(msgID, message);
         }
       }
@@ -244,7 +244,7 @@
 
       msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_TYPE;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -311,7 +311,7 @@
 
         msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_PIN_PROPERTY;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new InitializationException(msgID, message, e);
       }
 
@@ -361,7 +361,7 @@
 
         msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_PIN_ENVAR;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new InitializationException(msgID, message, e);
       }
 
@@ -401,7 +401,7 @@
               msgID = MSGID_FILE_TRUSTMANAGER_PIN_FILE_CANNOT_READ;
               String message = getMessage(msgID, String.valueOf(fileName),
                                           String.valueOf(configEntryDN),
-                                          stackTraceToSingleLineString(ioe));
+                                          getExceptionMessage(ioe));
               throw new InitializationException(msgID, message, ioe);
             }
 
@@ -439,7 +439,7 @@
 
         msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_PIN_FILE;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new InitializationException(msgID, message, e);
       }
 
@@ -467,7 +467,7 @@
 
         msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_PIN_FROM_ATTR;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new InitializationException(msgID, message, e);
       }
     }
@@ -521,7 +521,7 @@
 
       int msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_LOAD;
       String message = getMessage(msgID, trustStoreFile,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
     }
@@ -544,7 +544,7 @@
 
       int msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_CREATE_FACTORY;
       String message = getMessage(msgID, trustStoreFile,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
     }
@@ -703,7 +703,7 @@
 
       msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_FILE;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       unacceptableReasons.add(message);
       return false;
     }
@@ -738,7 +738,7 @@
           msgID = MSGID_FILE_TRUSTMANAGER_INVALID_TYPE;
           String message = getMessage(msgID, String.valueOf(typeStr),
                                       String.valueOf(configEntryDN),
-                                      stackTraceToSingleLineString(kse));
+                                      getExceptionMessage(kse));
           unacceptableReasons.add(message);
           return false;
         }
@@ -753,7 +753,7 @@
 
       msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_TYPE;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       unacceptableReasons.add(message);
       return false;
     }
@@ -800,7 +800,7 @@
 
         msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_PIN_PROPERTY;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         unacceptableReasons.add(message);
         return false;
       }
@@ -841,7 +841,7 @@
 
         msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_PIN_ENVAR;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         unacceptableReasons.add(message);
         return false;
       }
@@ -883,7 +883,7 @@
               msgID = MSGID_FILE_TRUSTMANAGER_PIN_FILE_CANNOT_READ;
               String message = getMessage(msgID, String.valueOf(fileName),
                                           String.valueOf(configEntryDN),
-                                          stackTraceToSingleLineString(ioe));
+                                          getExceptionMessage(ioe));
               unacceptableReasons.add(message);
               return false;
             }
@@ -912,7 +912,7 @@
 
         msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_PIN_FILE;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         unacceptableReasons.add(message);
         return false;
       }
@@ -940,7 +940,7 @@
 
         msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_PIN_FROM_ATTR;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         unacceptableReasons.add(message);
         return false;
       }
@@ -1029,7 +1029,7 @@
 
       msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_FILE;
       messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              stackTraceToSingleLineString(e)));
+                              getExceptionMessage(e)));
 
       if (resultCode == ResultCode.SUCCESS)
       {
@@ -1068,7 +1068,7 @@
           msgID = MSGID_FILE_TRUSTMANAGER_INVALID_TYPE;
           messages.add(getMessage(msgID, String.valueOf(newTrustStoreType),
                                   String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(kse)));
+                                  getExceptionMessage(kse)));
 
           if (resultCode == ResultCode.SUCCESS)
           {
@@ -1086,7 +1086,7 @@
 
       msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_TYPE;
       messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              stackTraceToSingleLineString(e)));
+                              getExceptionMessage(e)));
 
       if (resultCode == ResultCode.SUCCESS)
       {
@@ -1147,7 +1147,7 @@
 
         msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_PIN_PROPERTY;
         messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                stackTraceToSingleLineString(e)));
+                                getExceptionMessage(e)));
 
         if (resultCode == ResultCode.SUCCESS)
         {
@@ -1200,7 +1200,7 @@
 
         msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_PIN_ENVAR;
         messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                stackTraceToSingleLineString(e)));
+                                getExceptionMessage(e)));
 
         if (resultCode == ResultCode.SUCCESS)
         {
@@ -1252,7 +1252,7 @@
               msgID = MSGID_FILE_TRUSTMANAGER_PIN_FILE_CANNOT_READ;
               messages.add(getMessage(msgID, String.valueOf(fileName),
                                       String.valueOf(configEntryDN),
-                                      stackTraceToSingleLineString(ioe)));
+                                      getExceptionMessage(ioe)));
 
               if (resultCode == ResultCode.SUCCESS)
               {
@@ -1293,7 +1293,7 @@
 
         msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_PIN_FILE;
         messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                stackTraceToSingleLineString(e)));
+                                getExceptionMessage(e)));
 
         if (resultCode == ResultCode.SUCCESS)
         {
@@ -1327,7 +1327,7 @@
 
         msgID = MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_PIN_FROM_ATTR;
         messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                stackTraceToSingleLineString(e)));
+                                getExceptionMessage(e)));
 
         if (resultCode == ResultCode.SUCCESS)
         {
diff --git a/opends/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java b/opends/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java
index 35417b3..1c0e55e 100644
--- a/opends/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java
+++ b/opends/src/server/org/opends/server/extensions/FingerprintCertificateMapper.java
@@ -213,7 +213,7 @@
 
       int    msgID   = MSGID_FCM_CANNOT_CALCULATE_FINGERPRINT;
       String message = getMessage(msgID, peerSubject,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new DirectoryException(ResultCode.INVALID_CREDENTIALS, message,
                                    msgID);
     }
diff --git a/opends/src/server/org/opends/server/extensions/GSSAPISASLMechanismHandler.java b/opends/src/server/org/opends/server/extensions/GSSAPISASLMechanismHandler.java
index aba77e2..4cc7d1c 100644
--- a/opends/src/server/org/opends/server/extensions/GSSAPISASLMechanismHandler.java
+++ b/opends/src/server/org/opends/server/extensions/GSSAPISASLMechanismHandler.java
@@ -141,7 +141,7 @@
 
         int    msgID   = MSGID_SASLGSSAPI_CANNOT_GET_SERVER_FQDN;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new InitializationException(msgID, message, e);
       }
     }
@@ -199,7 +199,7 @@
       }
 
       int    msgID   = MSGID_SASLGSSAPI_CANNOT_CREATE_JAAS_CONFIG;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -447,7 +447,7 @@
 
         int msgID = MSGID_SASLGSSAPI_CANNOT_GET_SERVER_FQDN;
         messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                stackTraceToSingleLineString(e)));
+                                getExceptionMessage(e)));
       }
     }
 
@@ -504,7 +504,7 @@
         resultCode = DirectoryServer.getServerErrorResultCode();
 
         int msgID = MSGID_SASLGSSAPI_CANNOT_CREATE_JAAS_CONFIG;
-        messages.add(getMessage(msgID, stackTraceToSingleLineString(e)));
+        messages.add(getMessage(msgID, getExceptionMessage(e)));
 
        return new ConfigChangeResult(resultCode, adminActionRequired, messages);
       }
diff --git a/opends/src/server/org/opends/server/extensions/GSSAPIStateInfo.java b/opends/src/server/org/opends/server/extensions/GSSAPIStateInfo.java
index d157766..8927486 100644
--- a/opends/src/server/org/opends/server/extensions/GSSAPIStateInfo.java
+++ b/opends/src/server/org/opends/server/extensions/GSSAPIStateInfo.java
@@ -140,7 +140,7 @@
       }
 
       int    msgID   = MSGID_SASLGSSAPI_CANNOT_CREATE_LOGIN_CONTEXT;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -156,7 +156,7 @@
       }
 
       int    msgID   = MSGID_SASLGSSAPI_CANNOT_AUTHENTICATE_SERVER;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -277,7 +277,7 @@
         }
 
         int    msgID   = MSGID_SASLGSSAPI_CANNOT_CREATE_SASL_SERVER;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
 
         clientConnection.setSASLAuthStateInfo(null);
         bindOperation.setAuthFailureReason(msgID, message);
@@ -336,7 +336,7 @@
       }
 
       int    msgID   = MSGID_SASLGSSAPI_CANNOT_EVALUATE_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
 
       clientConnection.setSASLAuthStateInfo(null);
       bindOperation.setAuthFailureReason(msgID, message);
diff --git a/opends/src/server/org/opends/server/extensions/LengthBasedPasswordValidator.java b/opends/src/server/org/opends/server/extensions/LengthBasedPasswordValidator.java
index 28ec02f..bb4d268 100644
--- a/opends/src/server/org/opends/server/extensions/LengthBasedPasswordValidator.java
+++ b/opends/src/server/org/opends/server/extensions/LengthBasedPasswordValidator.java
@@ -35,11 +35,11 @@
 import org.opends.server.admin.std.server.LengthBasedPasswordValidatorCfg;
 import org.opends.server.api.PasswordValidator;
 import org.opends.server.config.ConfigException;
-import org.opends.server.core.Operation;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.Entry;
 import org.opends.server.types.InitializationException;
+import org.opends.server.types.Operation;
 import org.opends.server.types.ResultCode;
 
 import static org.opends.server.messages.ExtensionsMessages.*;
diff --git a/opends/src/server/org/opends/server/extensions/MD5PasswordStorageScheme.java b/opends/src/server/org/opends/server/extensions/MD5PasswordStorageScheme.java
index 885dbd6..17e69d8 100644
--- a/opends/src/server/org/opends/server/extensions/MD5PasswordStorageScheme.java
+++ b/opends/src/server/org/opends/server/extensions/MD5PasswordStorageScheme.java
@@ -160,8 +160,7 @@
       }
 
       int    msgID   = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
@@ -204,8 +203,7 @@
       }
 
       int    msgID   = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
diff --git a/opends/src/server/org/opends/server/extensions/NullConnectionSecurityProvider.java b/opends/src/server/org/opends/server/extensions/NullConnectionSecurityProvider.java
index 8c44c77..64c0a70 100644
--- a/opends/src/server/org/opends/server/extensions/NullConnectionSecurityProvider.java
+++ b/opends/src/server/org/opends/server/extensions/NullConnectionSecurityProvider.java
@@ -329,7 +329,7 @@
         // An unexpected error occurred.  Disconnect and return.
         clientConnection.disconnect(DisconnectReason.SERVER_ERROR, true,
                                     MSGID_NULL_SECURITY_PROVIDER_READ_ERROR,
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         return false;
       }
     }
@@ -398,7 +398,7 @@
       // An unexpected error occurred.  Disconnect and return.
       clientConnection.disconnect(DisconnectReason.SERVER_ERROR, true,
                                   MSGID_NULL_SECURITY_PROVIDER_WRITE_ERROR,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       return false;
     }
     finally
diff --git a/opends/src/server/org/opends/server/extensions/PKCS11KeyManagerProvider.java b/opends/src/server/org/opends/server/extensions/PKCS11KeyManagerProvider.java
index 4b9fc96..a00b9fc 100644
--- a/opends/src/server/org/opends/server/extensions/PKCS11KeyManagerProvider.java
+++ b/opends/src/server/org/opends/server/extensions/PKCS11KeyManagerProvider.java
@@ -194,7 +194,7 @@
 
         msgID = MSGID_PKCS11_KEYMANAGER_CANNOT_DETERMINE_PIN_PROPERTY;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new InitializationException(msgID, message, e);
       }
 
@@ -244,7 +244,7 @@
 
         msgID = MSGID_PKCS11_KEYMANAGER_CANNOT_DETERMINE_PIN_ENVAR;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new InitializationException(msgID, message, e);
       }
 
@@ -284,7 +284,7 @@
               msgID = MSGID_PKCS11_KEYMANAGER_PIN_FILE_CANNOT_READ;
               String message = getMessage(msgID, String.valueOf(fileName),
                                           String.valueOf(configEntryDN),
-                                          stackTraceToSingleLineString(ioe));
+                                          getExceptionMessage(ioe));
               throw new InitializationException(msgID, message, ioe);
             }
 
@@ -322,7 +322,7 @@
 
         msgID = MSGID_PKCS11_KEYMANAGER_CANNOT_DETERMINE_PIN_FILE;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new InitializationException(msgID, message, e);
       }
 
@@ -350,7 +350,7 @@
 
         msgID = MSGID_PKCS11_KEYMANAGER_CANNOT_DETERMINE_PIN_FROM_ATTR;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new InitializationException(msgID, message, e);
       }
     }
@@ -446,8 +446,7 @@
 
         int msgID = MSGID_PKCS11_KEYMANAGER_PIN_FILE_CANNOT_READ;
         String message = getMessage(msgID, String.valueOf(fileName),
-            String.valueOf(configEntryDN),
-            stackTraceToSingleLineString(ioe));
+            String.valueOf(configEntryDN), getExceptionMessage(ioe));
         throw new InitializationException(msgID, message, ioe);
       }
 
@@ -513,7 +512,7 @@
       }
 
       int msgID = MSGID_PKCS11_KEYMANAGER_CANNOT_LOAD;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
     }
@@ -535,7 +534,7 @@
       }
 
       int msgID = MSGID_PKCS11_KEYMANAGER_CANNOT_CREATE_FACTORY;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
     }
@@ -678,7 +677,7 @@
 
         msgID = MSGID_PKCS11_KEYMANAGER_CANNOT_DETERMINE_PIN_PROPERTY;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         unacceptableReasons.add(message);
         return false;
       }
@@ -720,7 +719,7 @@
 
         msgID = MSGID_PKCS11_KEYMANAGER_CANNOT_DETERMINE_PIN_ENVAR;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         unacceptableReasons.add(message);
         return false;
       }
@@ -762,7 +761,7 @@
               msgID = MSGID_PKCS11_KEYMANAGER_PIN_FILE_CANNOT_READ;
               String message = getMessage(msgID, String.valueOf(fileName),
                                           String.valueOf(configEntryDN),
-                                          stackTraceToSingleLineString(ioe));
+                                          getExceptionMessage(ioe));
               unacceptableReasons.add(message);
               return false;
             }
@@ -792,7 +791,7 @@
 
         msgID = MSGID_PKCS11_KEYMANAGER_CANNOT_DETERMINE_PIN_FILE;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         unacceptableReasons.add(message);
         return false;
       }
@@ -821,7 +820,7 @@
 
         msgID = MSGID_PKCS11_KEYMANAGER_CANNOT_DETERMINE_PIN_FROM_ATTR;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         unacceptableReasons.add(message);
         return false;
       }
@@ -918,7 +917,7 @@
 
         msgID = MSGID_PKCS11_KEYMANAGER_CANNOT_DETERMINE_PIN_PROPERTY;
         messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                stackTraceToSingleLineString(e)));
+                                getExceptionMessage(e)));
 
         if (resultCode == ResultCode.SUCCESS)
         {
@@ -971,7 +970,7 @@
 
         msgID = MSGID_PKCS11_KEYMANAGER_CANNOT_DETERMINE_PIN_ENVAR;
         messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                stackTraceToSingleLineString(e)));
+                                getExceptionMessage(e)));
 
         if (resultCode == ResultCode.SUCCESS)
         {
@@ -1023,7 +1022,7 @@
               msgID = MSGID_PKCS11_KEYMANAGER_PIN_FILE_CANNOT_READ;
               messages.add(getMessage(msgID, String.valueOf(fileName),
                                       String.valueOf(configEntryDN),
-                                      stackTraceToSingleLineString(ioe)));
+                                      getExceptionMessage(ioe)));
 
               if (resultCode == ResultCode.SUCCESS)
               {
@@ -1064,7 +1063,7 @@
 
         msgID = MSGID_PKCS11_KEYMANAGER_CANNOT_DETERMINE_PIN_FILE;
         messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                stackTraceToSingleLineString(e)));
+                                getExceptionMessage(e)));
 
         if (resultCode == ResultCode.SUCCESS)
         {
@@ -1098,7 +1097,7 @@
 
         msgID = MSGID_PKCS11_KEYMANAGER_CANNOT_DETERMINE_PIN_FROM_ATTR;
         messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                stackTraceToSingleLineString(e)));
+                                getExceptionMessage(e)));
 
         if (resultCode == ResultCode.SUCCESS)
         {
diff --git a/opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java b/opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java
index ffd4d8f..647283a 100644
--- a/opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java
+++ b/opends/src/server/org/opends/server/extensions/PasswordModifyExtendedOperation.java
@@ -163,7 +163,7 @@
       }
       int msgID = MSGID_EXTOP_PASSMOD_CANNOT_DETERMINE_ID_MAPPER;
       String message = getMessage(msgID, String.valueOf(config.dn()),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -282,7 +282,7 @@
         operation.setResultCode(ResultCode.PROTOCOL_ERROR);
 
         int    msgID   = MSGID_EXTOP_PASSMOD_CANNOT_DECODE_REQUEST;
-        String message = getMessage(msgID, stackTraceToSingleLineString(ae));
+        String message = getMessage(msgID, getExceptionMessage(ae));
         operation.appendErrorMessage(message);
 
         return;
@@ -1303,7 +1303,7 @@
 
       int msgID = MSGID_EXTOP_PASSMOD_CANNOT_DETERMINE_ID_MAPPER;
       String message = getMessage(msgID, String.valueOf(config.dn()),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       unacceptableReasons.add(message);
       return false;
     }
@@ -1364,7 +1364,7 @@
 
       int msgID = MSGID_EXTOP_PASSMOD_CANNOT_DETERMINE_ID_MAPPER;
       messages.add(getMessage(msgID, String.valueOf(config.dn()),
-                              stackTraceToSingleLineString(e)));
+                              getExceptionMessage(e)));
     }
 
 
diff --git a/opends/src/server/org/opends/server/extensions/RandomPasswordGenerator.java b/opends/src/server/org/opends/server/extensions/RandomPasswordGenerator.java
index 11f68a1..a2e6d6a 100644
--- a/opends/src/server/org/opends/server/extensions/RandomPasswordGenerator.java
+++ b/opends/src/server/org/opends/server/extensions/RandomPasswordGenerator.java
@@ -156,7 +156,7 @@
       }
 
       msgID = MSGID_RANDOMPWGEN_CANNOT_DETERMINE_CHARSETS;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -236,7 +236,7 @@
       }
 
       msgID = MSGID_RANDOMPWGEN_CANNOT_DETERMINE_PWFORMAT;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new InitializationException(msgID, message, e);
     }
 
@@ -399,7 +399,7 @@
       }
 
       msgID = MSGID_RANDOMPWGEN_CANNOT_DETERMINE_CHARSETS;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       unacceptableReasons.add(message);
       return false;
     }
@@ -454,7 +454,7 @@
       }
 
       msgID = MSGID_RANDOMPWGEN_CANNOT_DETERMINE_PWFORMAT;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       unacceptableReasons.add(message);
       return false;
     }
@@ -536,7 +536,7 @@
       }
 
       msgID = MSGID_RANDOMPWGEN_CANNOT_DETERMINE_CHARSETS;
-      messages.add(getMessage(msgID, stackTraceToSingleLineString(e)));
+      messages.add(getMessage(msgID, getExceptionMessage(e)));
 
       if (resultCode == ResultCode.SUCCESS)
       {
@@ -610,7 +610,7 @@
       }
 
       msgID = MSGID_RANDOMPWGEN_CANNOT_DETERMINE_PWFORMAT;
-      messages.add(getMessage(msgID, stackTraceToSingleLineString(e)));
+      messages.add(getMessage(msgID, getExceptionMessage(e)));
 
       if (resultCode == ResultCode.SUCCESS)
       {
diff --git a/opends/src/server/org/opends/server/extensions/RepeatedCharactersPasswordValidator.java b/opends/src/server/org/opends/server/extensions/RepeatedCharactersPasswordValidator.java
index 0811659..a1e9919 100644
--- a/opends/src/server/org/opends/server/extensions/RepeatedCharactersPasswordValidator.java
+++ b/opends/src/server/org/opends/server/extensions/RepeatedCharactersPasswordValidator.java
@@ -36,10 +36,10 @@
 import org.opends.server.admin.std.server.
             RepeatedCharactersPasswordValidatorCfg;
 import org.opends.server.api.PasswordValidator;
-import org.opends.server.core.Operation;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.Entry;
+import org.opends.server.types.Operation;
 import org.opends.server.types.ResultCode;
 
 import static org.opends.server.messages.ExtensionsMessages.*;
diff --git a/opends/src/server/org/opends/server/extensions/SHA1PasswordStorageScheme.java b/opends/src/server/org/opends/server/extensions/SHA1PasswordStorageScheme.java
index 0748ec3..a5fc58e 100644
--- a/opends/src/server/org/opends/server/extensions/SHA1PasswordStorageScheme.java
+++ b/opends/src/server/org/opends/server/extensions/SHA1PasswordStorageScheme.java
@@ -160,8 +160,7 @@
       }
 
       int    msgID   = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
@@ -204,8 +203,7 @@
       }
 
       int    msgID   = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
diff --git a/opends/src/server/org/opends/server/extensions/SaltedMD5PasswordStorageScheme.java b/opends/src/server/org/opends/server/extensions/SaltedMD5PasswordStorageScheme.java
index 0beab5f..fb6b42c 100644
--- a/opends/src/server/org/opends/server/extensions/SaltedMD5PasswordStorageScheme.java
+++ b/opends/src/server/org/opends/server/extensions/SaltedMD5PasswordStorageScheme.java
@@ -188,8 +188,7 @@
       }
 
       int msgID = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
@@ -251,8 +250,7 @@
       }
 
       int msgID = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
@@ -403,8 +401,7 @@
       }
 
       int msgID = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
diff --git a/opends/src/server/org/opends/server/extensions/SaltedSHA1PasswordStorageScheme.java b/opends/src/server/org/opends/server/extensions/SaltedSHA1PasswordStorageScheme.java
index 7842f4a..75ef462 100644
--- a/opends/src/server/org/opends/server/extensions/SaltedSHA1PasswordStorageScheme.java
+++ b/opends/src/server/org/opends/server/extensions/SaltedSHA1PasswordStorageScheme.java
@@ -187,8 +187,7 @@
       }
 
       int msgID = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
@@ -250,8 +249,7 @@
       }
 
       int msgID = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
@@ -402,8 +400,7 @@
       }
 
       int msgID = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
diff --git a/opends/src/server/org/opends/server/extensions/SaltedSHA256PasswordStorageScheme.java b/opends/src/server/org/opends/server/extensions/SaltedSHA256PasswordStorageScheme.java
index ec829d5..d701e81 100644
--- a/opends/src/server/org/opends/server/extensions/SaltedSHA256PasswordStorageScheme.java
+++ b/opends/src/server/org/opends/server/extensions/SaltedSHA256PasswordStorageScheme.java
@@ -190,8 +190,7 @@
       }
 
       int    msgID   = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
@@ -253,8 +252,7 @@
       }
 
       int    msgID   = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
@@ -405,8 +403,7 @@
       }
 
       int msgID = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
diff --git a/opends/src/server/org/opends/server/extensions/SaltedSHA384PasswordStorageScheme.java b/opends/src/server/org/opends/server/extensions/SaltedSHA384PasswordStorageScheme.java
index c59b364..9ebc35f 100644
--- a/opends/src/server/org/opends/server/extensions/SaltedSHA384PasswordStorageScheme.java
+++ b/opends/src/server/org/opends/server/extensions/SaltedSHA384PasswordStorageScheme.java
@@ -190,8 +190,7 @@
       }
 
       int    msgID   = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
@@ -253,8 +252,7 @@
       }
 
       int    msgID   = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
@@ -405,8 +403,7 @@
       }
 
       int msgID = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
diff --git a/opends/src/server/org/opends/server/extensions/SaltedSHA512PasswordStorageScheme.java b/opends/src/server/org/opends/server/extensions/SaltedSHA512PasswordStorageScheme.java
index 65d4aaf..912bfe6 100644
--- a/opends/src/server/org/opends/server/extensions/SaltedSHA512PasswordStorageScheme.java
+++ b/opends/src/server/org/opends/server/extensions/SaltedSHA512PasswordStorageScheme.java
@@ -189,8 +189,7 @@
       }
 
       int    msgID   = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
@@ -252,8 +251,7 @@
       }
 
       int    msgID   = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
@@ -404,8 +402,7 @@
       }
 
       int msgID = MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD;
-      String message = getMessage(msgID, CLASS_NAME,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, CLASS_NAME, getExceptionMessage(e));
 
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
diff --git a/opends/src/server/org/opends/server/extensions/SimilarityBasedPasswordValidator.java b/opends/src/server/org/opends/server/extensions/SimilarityBasedPasswordValidator.java
index c6bfab0..f4f7b11 100644
--- a/opends/src/server/org/opends/server/extensions/SimilarityBasedPasswordValidator.java
+++ b/opends/src/server/org/opends/server/extensions/SimilarityBasedPasswordValidator.java
@@ -31,12 +31,12 @@
 
 import org.opends.server.api.PasswordValidator;
 import org.opends.server.config.ConfigException;
-import org.opends.server.core.Operation;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.ByteStringFactory;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.Entry;
 import org.opends.server.types.InitializationException;
+import org.opends.server.types.Operation;
 import org.opends.server.types.ResultCode;
 import org.opends.server.util.LevenshteinDistance;
 import org.opends.server.admin.std.server.SimilarityBasedPasswordValidatorCfg;
diff --git a/opends/src/server/org/opends/server/extensions/SoftReferenceEntryCache.java b/opends/src/server/org/opends/server/extensions/SoftReferenceEntryCache.java
index c65a13a..538cb3d 100644
--- a/opends/src/server/org/opends/server/extensions/SoftReferenceEntryCache.java
+++ b/opends/src/server/org/opends/server/extensions/SoftReferenceEntryCache.java
@@ -212,7 +212,7 @@
       // Log an error message.
       logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
                MSGID_SOFTREFCACHE_CANNOT_DETERMINE_LOCK_TIMEOUT,
-               String.valueOf(configEntryDN), stackTraceToSingleLineString(e),
+               String.valueOf(configEntryDN), getExceptionMessage(e),
                lockTimeout);
     }
 
@@ -260,7 +260,7 @@
                        ErrorLogSeverity.SEVERE_WARNING,
                        MSGID_SOFTREFCACHE_CANNOT_DECODE_INCLUDE_FILTER,
                        String.valueOf(configEntryDN), filterString,
-                       stackTraceToSingleLineString(e));
+                       getExceptionMessage(e));
             }
           }
 
@@ -284,7 +284,7 @@
       // Log an error message.
       logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
                MSGID_SOFTREFCACHE_CANNOT_DETERMINE_INCLUDE_FILTERS,
-               String.valueOf(configEntryDN), stackTraceToSingleLineString(e));
+               String.valueOf(configEntryDN), getExceptionMessage(e));
     }
 
 
@@ -331,7 +331,7 @@
                        ErrorLogSeverity.SEVERE_WARNING,
                        MSGID_SOFTREFCACHE_CANNOT_DECODE_EXCLUDE_FILTER,
                        String.valueOf(configEntryDN), filterString,
-                       stackTraceToSingleLineString(e));
+                       getExceptionMessage(e));
             }
           }
 
@@ -355,7 +355,7 @@
       // Log an error message.
       logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
                MSGID_SOFTREFCACHE_CANNOT_DETERMINE_EXCLUDE_FILTERS,
-               String.valueOf(configEntryDN), stackTraceToSingleLineString(e));
+               String.valueOf(configEntryDN), getExceptionMessage(e));
     }
   }
 
@@ -1162,7 +1162,7 @@
       // An error occurred, so the provided value must not be valid.
       msgID = MSGID_SOFTREFCACHE_INVALID_LOCK_TIMEOUT;
       unacceptableReasons.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                         stackTraceToSingleLineString(e)));
+                                         getExceptionMessage(e)));
       configIsAcceptable = false;
     }
 
@@ -1208,7 +1208,7 @@
               unacceptableReasons.add(getMessage(msgID,
                                            String.valueOf(configEntryDN),
                                             filterString,
-                                            stackTraceToSingleLineString(e)));
+                                            getExceptionMessage(e)));
               configIsAcceptable = false;
             }
           }
@@ -1225,7 +1225,7 @@
       // An error occurred, so the provided value must not be valid.
       msgID = MSGID_SOFTREFCACHE_INVALID_INCLUDE_FILTERS;
       unacceptableReasons.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                         stackTraceToSingleLineString(e)));
+                                         getExceptionMessage(e)));
       configIsAcceptable = false;
     }
 
@@ -1270,8 +1270,8 @@
               msgID = MSGID_SOFTREFCACHE_INVALID_EXCLUDE_FILTER;
               unacceptableReasons.add(getMessage(msgID,
                                            String.valueOf(configEntryDN),
-                                            filterString,
-                                            stackTraceToSingleLineString(e)));
+                                           filterString,
+                                           getExceptionMessage(e)));
               configIsAcceptable = false;
             }
           }
@@ -1288,7 +1288,7 @@
       // An error occurred, so the provided value must not be valid.
       msgID = MSGID_SOFTREFCACHE_INVALID_EXCLUDE_FILTERS;
       unacceptableReasons.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                         stackTraceToSingleLineString(e)));
+                                         getExceptionMessage(e)));
       configIsAcceptable = false;
     }
 
@@ -1351,7 +1351,7 @@
       // An error occurred, so the provided value must not be valid.
       msgID = MSGID_SOFTREFCACHE_INVALID_LOCK_TIMEOUT;
       messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              stackTraceToSingleLineString(e)));
+                              getExceptionMessage(e)));
 
       if (resultCode == ResultCode.SUCCESS)
       {
@@ -1399,8 +1399,7 @@
               // We couldn't decode this filter, so it isn't valid.
               msgID = MSGID_SOFTREFCACHE_INVALID_INCLUDE_FILTER;
               messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                      filterString,
-                                      stackTraceToSingleLineString(e)));
+                                      filterString, getExceptionMessage(e)));
 
               if (resultCode == ResultCode.SUCCESS)
               {
@@ -1423,7 +1422,7 @@
       // An error occurred, so the provided value must not be valid.
       msgID = MSGID_SOFTREFCACHE_INVALID_INCLUDE_FILTERS;
       messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              stackTraceToSingleLineString(e)));
+                              getExceptionMessage(e)));
 
       if (resultCode == ResultCode.SUCCESS)
       {
@@ -1471,8 +1470,7 @@
               // We couldn't decode this filter, so it isn't valid.
               msgID = MSGID_SOFTREFCACHE_INVALID_EXCLUDE_FILTER;
               messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                                      filterString,
-                                      stackTraceToSingleLineString(e)));
+                                      filterString, getExceptionMessage(e)));
 
               if (resultCode == ResultCode.SUCCESS)
               {
@@ -1495,7 +1493,7 @@
       // An error occurred, so the provided value must not be valid.
       msgID = MSGID_SOFTREFCACHE_INVALID_EXCLUDE_FILTERS;
       messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              stackTraceToSingleLineString(e)));
+                              getExceptionMessage(e)));
 
       if (resultCode == ResultCode.SUCCESS)
       {
diff --git a/opends/src/server/org/opends/server/extensions/StartTLSExtendedOperation.java b/opends/src/server/org/opends/server/extensions/StartTLSExtendedOperation.java
index 42c29af..26e9950 100644
--- a/opends/src/server/org/opends/server/extensions/StartTLSExtendedOperation.java
+++ b/opends/src/server/org/opends/server/extensions/StartTLSExtendedOperation.java
@@ -181,8 +181,7 @@
       }
 
       logError(ErrorLogCategory.CORE_SERVER, ErrorLogSeverity.MILD_ERROR,
-               MSGID_STARTTLS_ERROR_ON_ENABLE,
-               stackTraceToSingleLineString(de));
+               MSGID_STARTTLS_ERROR_ON_ENABLE, getExceptionMessage(de));
     }
 
 
@@ -204,11 +203,11 @@
 
       logError(ErrorLogCategory.CORE_SERVER, ErrorLogSeverity.MILD_ERROR,
                MSGID_STARTTLS_ERROR_SENDING_CLEAR_RESPONSE,
-               stackTraceToSingleLineString(e));
+               getExceptionMessage(e));
 
       clientConnection.disconnect(DisconnectReason.SECURITY_PROBLEM, false,
                                   MSGID_STARTTLS_ERROR_SENDING_CLEAR_RESPONSE,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
     }
   }
 }
diff --git a/opends/src/server/org/opends/server/extensions/SubjectEqualsDNCertificateMapper.java b/opends/src/server/org/opends/server/extensions/SubjectEqualsDNCertificateMapper.java
index 9bbe1be..99e8ed1 100644
--- a/opends/src/server/org/opends/server/extensions/SubjectEqualsDNCertificateMapper.java
+++ b/opends/src/server/org/opends/server/extensions/SubjectEqualsDNCertificateMapper.java
@@ -156,7 +156,7 @@
 
       int    msgID   = MSGID_SEDCM_CANNOT_DECODE_SUBJECT_AS_DN;
       String message = getMessage(msgID, String.valueOf(peerPrincipal),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new DirectoryException(ResultCode.INVALID_CREDENTIALS, message,
                                    msgID);
     }
@@ -211,7 +211,7 @@
 
       int    msgID   = MSGID_SEDCM_CANNOT_GET_ENTRY;
       String message = getMessage(msgID, String.valueOf(subjectDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new DirectoryException(ResultCode.INVALID_CREDENTIALS, message,
                                    msgID, e);
     }
diff --git a/opends/src/server/org/opends/server/extensions/TLSCapableConnection.java b/opends/src/server/org/opends/server/extensions/TLSCapableConnection.java
index 360fab8..ae4efef 100644
--- a/opends/src/server/org/opends/server/extensions/TLSCapableConnection.java
+++ b/opends/src/server/org/opends/server/extensions/TLSCapableConnection.java
@@ -28,8 +28,8 @@
 
 
 
-import org.opends.server.core.Operation;
 import org.opends.server.types.DirectoryException;
+import org.opends.server.types.Operation;
 
 
 
diff --git a/opends/src/server/org/opends/server/extensions/TLSConnectionSecurityProvider.java b/opends/src/server/org/opends/server/extensions/TLSConnectionSecurityProvider.java
index a6d1f1d..97b6ef8 100644
--- a/opends/src/server/org/opends/server/extensions/TLSConnectionSecurityProvider.java
+++ b/opends/src/server/org/opends/server/extensions/TLSConnectionSecurityProvider.java
@@ -212,7 +212,7 @@
       }
 
       int msgID = MSGID_TLS_SECURITY_PROVIDER_CANNOT_INITIALIZE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
     }
@@ -660,7 +660,7 @@
         // Disconnect and return.
         clientConnection.disconnect(DisconnectReason.SERVER_ERROR, true,
                                     MSGID_TLS_SECURITY_PROVIDER_READ_ERROR,
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         return false;
       }
     }
@@ -960,7 +960,7 @@
       // Disconnect and return.
       clientConnection.disconnect(DisconnectReason.SERVER_ERROR, true,
                                   MSGID_TLS_SECURITY_PROVIDER_WRITE_ERROR,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       return false;
     }
   }
diff --git a/opends/src/server/org/opends/server/extensions/TraditionalWorkQueue.java b/opends/src/server/org/opends/server/extensions/TraditionalWorkQueue.java
index 3a4425e..b0e7cec 100644
--- a/opends/src/server/org/opends/server/extensions/TraditionalWorkQueue.java
+++ b/opends/src/server/org/opends/server/extensions/TraditionalWorkQueue.java
@@ -44,21 +44,20 @@
 import org.opends.server.config.ConfigException;
 import org.opends.server.config.IntegerConfigAttribute;
 import org.opends.server.core.DirectoryServer;
-import org.opends.server.core.Operation;
 import org.opends.server.monitors.TraditionalWorkQueueMonitor;
 import org.opends.server.types.CancelRequest;
 import org.opends.server.types.ConfigChangeResult;
+import org.opends.server.types.DebugLogLevel;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DN;
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
 import org.opends.server.types.InitializationException;
+import org.opends.server.types.Operation;
 import org.opends.server.types.ResultCode;
 
 import static org.opends.server.config.ConfigConstants.*;
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
-import org.opends.server.types.DebugLogLevel;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.loggers.Error.*;
 import static org.opends.server.messages.ConfigMessages.*;
 import static org.opends.server.messages.CoreMessages.*;
diff --git a/opends/src/server/org/opends/server/extensions/TraditionalWorkerThread.java b/opends/src/server/org/opends/server/extensions/TraditionalWorkerThread.java
index a368fd6..2cffc9a 100644
--- a/opends/src/server/org/opends/server/extensions/TraditionalWorkerThread.java
+++ b/opends/src/server/org/opends/server/extensions/TraditionalWorkerThread.java
@@ -28,27 +28,24 @@
 
 
 
+import java.util.Map;
+
 import org.opends.server.api.DirectoryThread;
 import org.opends.server.core.DirectoryServer;
-import org.opends.server.core.Operation;
 import org.opends.server.types.CancelRequest;
 import org.opends.server.types.CancelResult;
+import org.opends.server.types.DebugLogLevel;
 import org.opends.server.types.DisconnectReason;
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
+import org.opends.server.types.Operation;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
-import static org.opends.server.loggers.debug.DebugLogger.debugInfo;
-import static org.opends.server.loggers.debug.DebugLogger.debugWarning;
-import org.opends.server.types.DebugLogLevel;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.loggers.Error.*;
 import static org.opends.server.messages.CoreMessages.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.util.StaticUtils.*;
 
-import java.util.Map;
-
 
 /**
  * This class defines a data structure for storing and interacting with a
@@ -57,9 +54,6 @@
 public class TraditionalWorkerThread
        extends DirectoryThread
 {
-
-
-
   // Indicates whether the Directory Server is shutting down and this thread
   // should stop running.
   private boolean shutdownRequested;
diff --git a/opends/src/server/org/opends/server/extensions/UniqueCharactersPasswordValidator.java b/opends/src/server/org/opends/server/extensions/UniqueCharactersPasswordValidator.java
index a734c6c..670f84a 100644
--- a/opends/src/server/org/opends/server/extensions/UniqueCharactersPasswordValidator.java
+++ b/opends/src/server/org/opends/server/extensions/UniqueCharactersPasswordValidator.java
@@ -36,10 +36,10 @@
 import org.opends.server.admin.server.ConfigurationChangeListener;
 import org.opends.server.admin.std.server.UniqueCharactersPasswordValidatorCfg;
 import org.opends.server.api.PasswordValidator;
-import org.opends.server.core.Operation;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.Entry;
+import org.opends.server.types.Operation;
 import org.opends.server.types.ResultCode;
 
 import static org.opends.server.messages.ExtensionsMessages.*;
diff --git a/opends/src/server/org/opends/server/loggers/DirectoryAuditLogger.java b/opends/src/server/org/opends/server/loggers/DirectoryAuditLogger.java
index a96af5d..e0da784 100644
--- a/opends/src/server/org/opends/server/loggers/DirectoryAuditLogger.java
+++ b/opends/src/server/org/opends/server/loggers/DirectoryAuditLogger.java
@@ -56,13 +56,13 @@
 import org.opends.server.core.SearchOperation;
 import org.opends.server.core.UnbindOperation;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPAttribute;
-import org.opends.server.protocols.ldap.LDAPModification;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DisconnectReason;
 import org.opends.server.types.DN;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.RawAttribute;
+import org.opends.server.types.RawModification;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchResultEntry;
 import org.opends.server.types.SearchResultReference;
@@ -233,8 +233,8 @@
       buffer.append(EOL);
       buffer.append("changetype: add");
       buffer.append(EOL);
-      List<LDAPAttribute> rawAttributes = addOperation.getRawAttributes();
-      for(LDAPAttribute attr : rawAttributes)
+      List<RawAttribute> rawAttributes = addOperation.getRawAttributes();
+      for(RawAttribute attr : rawAttributes)
       {
         buffer.append(attr.getAttributeType());
         buffer.append(":");
@@ -420,12 +420,12 @@
       buffer.append(EOL);
       buffer.append("changetype: modify");
       buffer.append(EOL);
-      List<LDAPModification> modifications =
+      List<RawModification> modifications =
            modifyOperation.getRawModifications();
-      for(LDAPModification modification : modifications)
+      for(RawModification modification : modifications)
       {
         ModificationType modType = modification.getModificationType();
-        LDAPAttribute attr = modification.getAttribute();
+        RawAttribute attr = modification.getAttribute();
         switch(modType)
         {
           case ADD:
diff --git a/opends/src/server/org/opends/server/messages/AciMessages.java b/opends/src/server/org/opends/server/messages/AciMessages.java
index 31f589a..58cb756 100644
--- a/opends/src/server/org/opends/server/messages/AciMessages.java
+++ b/opends/src/server/org/opends/server/messages/AciMessages.java
@@ -740,71 +740,71 @@
         registerMessage(MSGID_ACI_SYNTAX_GENERAL_PARSE_FAILED,
                 "The provided string  \"%s\" could not be parsed as a valid " +
                 "Access Control Instruction (ACI) because it failed "+
-                "general ACI syntax evaluation.");
+                "general ACI syntax evaluation");
 
         registerMessage(MSGID_ACI_SYNTAX_INVAILD_VERSION,
                 "The provided Access Control Instruction (ACI) version " +
                 "value  \"%s\" is invalid, only the version 3.0 is " +
-                "supported.");
+                "supported");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_ACCESS_TYPE_VERSION,
                 "The provided Access Control Instruction access " +
                 "type value  \"%s\" is invalid. A valid access type " +
-                "value is either allow or deny.");
+                "value is either allow or deny");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_RIGHTS_SYNTAX,
                 "The provided Access Control Instruction (ACI) rights " +
                 "values \"%s\" are invalid. The rights must be a " +
                 "list of 1 to 6 comma-separated keywords enclosed in " +
-                "parentheses.");
+                "parentheses");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_RIGHTS_KEYWORD,
                 "The provided Access Control Instruction (ACI) rights " +
                 "keyword values \"%s\" are invalid. The valid rights " +
                 "keyword values are one or more of the following: read, " +
                 "write, add, delete, search, compare or the single value " +
-                "all.");
+                "all");
 
         registerMessage(MSGID_ACI_SYNTAX_BIND_RULE_MISSING_CLOSE_PAREN,
                 "The provided Access Control Instruction (ACI) bind " +
                 "rule value \"%s\" is invalid because it is missing a " +
                 "close parenthesis that corresponded to the initial open " +
-                "parenthesis.");
+                "parenthesis");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_BIND_RULE_SYNTAX,
                 "The provided Access Control Instruction (ACI) bind rule " +
                 "value \"%s\" is invalid. A valid bind rule value must " +
                 "be in the following form: " +
-                "keyword operator \"expression\".");
+                "keyword operator \"expression\"");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_BIND_RULE_KEYWORD,
                 "The provided Access Control Instruction (ACI) bind rule " +
                 "keyword value \"%s\" is invalid. A valid keyword value is" +
                 " one of the following: userdn, groupdn, roledn, userattr," +
-                "ip, dns, dayofweek, timeofday or authmethod.");
+                "ip, dns, dayofweek, timeofday or authmethod");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_BIND_RULE_OPERATOR ,
                 "The provided Access Control Instruction (ACI) bind rule " +
                 "operator value  \"%s\" is invalid. A valid bind rule " +
-                "operator value is either '=' or \"!=\".");
+                "operator value is either '=' or \"!=\"");
 
         registerMessage(MSGID_ACI_SYNTAX_MISSING_BIND_RULE_EXPRESSION ,
                 "The provided Access Control Instruction (ACI) bind rule " +
                 "expression value corresponding to the keyword value " +
                 "\"%s\" is missing an expression. A valid bind rule value " +
                 "must be in the following form:" +
-                " keyword operator \"expression\".");
+                " keyword operator \"expression\"");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_BIND_RULE_BOOLEAN_OPERATOR ,
                 "The provided Access Control Instruction (ACI) bind rule " +
                 "boolean operator value \"%s\" is invalid. A valid bind" +
-                "rule boolean operator value is either \"OR\" or \"AND\".");
+                "rule boolean operator value is either \"OR\" or \"AND\"");
 
         registerMessage(
                 MSGID_ACI_SYNTAX_INVALID_BIND_RULE_KEYWORD_OPERATOR_COMBO,
                 "The provided Access Control Instruction (ACI) bind rule " +
                 "keyword string  \"%s\" is invalid for the bind rule " +
-                "operator string \"%s\".");
+                "operator string \"%s\"");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_USERDN_URL,
                 "The provided Access Control Instruction (ACI) bind rule " +
@@ -816,7 +816,7 @@
                 "roledn expression value \"%s\" is invalid. A valid roledn " +
                 "keyword expression value requires one or more LDAP URLs " +
                 "in the following format: " +
-                "ldap:///dn [|| ldap:///dn] ... [|| ldap:///dn].");
+                "ldap:///dn [|| ldap:///dn] ... [|| ldap:///dn]");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_ROLEDN_URL,
                 "The provided Access Control Instruction (ACI) bind rule " +
@@ -828,7 +828,7 @@
           "groupdn expression value \"%s\" is invalid. A valid groupdn " +
          "keyword expression  value requires one or more LDAP URLs in the" +
          " following format: " +
-         "ldap:///groupdn [|| ldap:///groupdn] ... [|| ldap:///groupdn].");
+         "ldap:///groupdn [|| ldap:///groupdn] ... [|| ldap:///groupdn]");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_GROUPDN_URL,
                 "The provided Access Control Instruction (ACI) bind rule " +
@@ -837,11 +837,11 @@
 
         registerMessage(MSGID_ACI_SYNTAX_ADDRESS_FAMILY_MISMATCH,
                 "The network mask value \"%s\" is not valid for " +
-                "the ip expression network address \"%s\".");
+                "the ip expression network address \"%s\"");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_NETWORK_BIT_MATCH,
                 "The bit mask for address type value \"%s\" is not valid." +
-                "%s.");
+                "%s");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_IP_CRITERIA_DECODE,
                 "The provided Access Control Instruction (ACI) bind rule " +
@@ -852,13 +852,13 @@
                 "The provided Access Control Instruction (ACI) bind rule " +
                 "ip expression value \"%s\" is invalid. A valid ip " +
                 "keyword expression value requires one or more" +
-                "comma-separated elements of an IP address list expression.");
+                "comma-separated elements of an IP address list expression");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_DNS_EXPRESSION,
                 "The provided Access Control Instruction (ACI) bind rule " +
                 "dns expression value \"%s\" is invalid. A valid dns " +
                 "keyword expression value requires a valid fully qualified"+
-                " DNS domain name.");
+                " DNS domain name");
 
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_DNS_WILDCARD,
@@ -867,25 +867,25 @@
                 " pattern was found in the wrong position. A valid dns " +
                 "keyword wild-card expression value requires the '*' " +
                 "character only be in the leftmost position of the " +
-                "domain name.");
+                "domain name");
         registerMessage(MSGID_ACI_LOCALHOST_DOESNT_MATCH_CANONICAL_VALUE,
                 "The provided Access Control Instruction (ACI) bind rule " +
                 "dns expression value \"%s\" references hostname %s, but " +
                 "the canonical representation for that hostname is " +
                 "configured to be %s.  The server will attempt to " +
-                "automatically interpret the correct localhost value.");
+                "automatically interpret the correct localhost value");
         registerMessage(MSGID_ACI_HOSTNAME_DOESNT_MATCH_CANONICAL_VALUE,
                 "The provided Access Control Instruction (ACI) bind rule " +
                 "dns expression value \"%s\" references hostname %s, which " +
                 "resolves to IP address %s, but the canonical hostname for " +
                 "that IP address is %s.  This likely means that the " +
-                "provided hostname will never match any clients.");
+                "provided hostname will never match any clients");
         registerMessage(MSGID_ACI_ERROR_CHECKING_CANONICAL_HOSTNAME,
                 "An error occurred while attempting to determine whether " +
                 "hostname %s referenced in dns expression bind rule \"%s\" " +
                 "used the correct canonical representation:  %s.  This " +
                 "likely means that the provided hostname will never match " +
-                "any clients.");
+                "any clients");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_DAYOFWEEK,
                 "The provided Access Control Instruction (ACI) bind rule " +
@@ -893,20 +893,20 @@
                 "an invalid day of week value. A valid dayofweek value " +
                 "is one of the following English three-letter abbreviations" +
                 "for the days of the week: sun, mon, tue, wed, thu, " +
-                "fri, or sat.");
+                "fri, or sat");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_TIMEOFDAY,
                 "The provided Access Control Instruction (ACI) bind rule " +
                 "timeofday expression value \"%s\" is invalid. A valid " +
                 "timeofday value is expressed as four digits representing " +
-                "hours and minutes in the 24-hour clock (0 to 2359).");
+                "hours and minutes in the 24-hour clock (0 to 2359)");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_TIMEOFDAY_RANGE,
                 "The provided Access Control Instruction (ACI) bind rule " +
                 "timeofday expression value \"%s\" is not in the valid" +
                  " range. A valid timeofday value is expressed as four" +
                  " digits representing hours and minutes in the 24-hour" +
-                 " clock (0 to 2359).");
+                 " clock (0 to 2359)");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_AUTHMETHOD_EXPRESSION,
                 "The provided Access Control Instruction (ACI) bind rule " +
@@ -914,7 +914,7 @@
                 "authmethod value is one of the following: none, simple," +
                 "SSL, or \"sasl mechanism\", where mechanism is one of the" +
                 "supported SASL mechanisms including CRAM-MD5, DIGEST-MD5, " +
-                "and GSSAPI.");
+                "and GSSAPI");
 
         registerMessage(MSGID_ACI_SYNTAX_DUBIOUS_AUTHMETHOD_SASL_MECHANISM,
                 "The SASL mechanism \"%s\" provided in the Access Control " +
@@ -923,104 +923,104 @@
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_USERATTR_EXPRESSION,
                 "The provided Access Control Instruction (ACI) bind rule " +
-                "userattr expression value \"%s\" is invalid.");
+                "userattr expression value \"%s\" is invalid");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_USERATTR_KEYWORD,
                 "The provided Access Control Instruction (ACI) bind rule " +
-                "userattr expression value \"%s\" is not supported.");
+                "userattr expression value \"%s\" is not supported");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_USERATTR_INHERITANCE_PATTERN,
                 "The provided Access Control Instruction (ACI) bind rule " +
                 "userattr expression inheritance pattern value \"%s\" is " +
                 "invalid. A valid inheritance pattern value must have" +
                 "the following format:" +
-                " parent[inheritance_level].attribute#bindType.");
+                " parent[inheritance_level].attribute#bindType");
 
         registerMessage(
                 MSGID_ACI_SYNTAX_MAX_USERATTR_INHERITANCE_LEVEL_EXCEEDED,
                 "The provided Access Control Instruction (ACI) bind rule " +
                 "userattr expression inheritance pattern value \"%s\" is " +
                 "invalid. The inheritance level value cannot exceed the" +
-                "max level limit of %s.");
+                "max level limit of %s");
 
         registerMessage(
                 MSGID_ACI_SYNTAX_INVALID_INHERITANCE_VALUE,
                 "The provided Access Control Instruction (ACI) bind rule " +
                 "userattr expression inheritance pattern value \"%s\" is" +
-                " invalid because it is non-numeric.");
+                " invalid because it is non-numeric");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_TARGET_SYNTAX,
                 "The provided Access Control Instruction (ACI) target rule" +
                 "value \"%s\" is invalid. A valid target rule value must" +
                 "be in the following form: " +
-                "keyword operator \"expression\".");
+                "keyword operator \"expression\"");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_TARGET_KEYWORD,
                 "The provided Access Control Instruction (ACI) target " +
                 "keyword value \"%s\" is invalid. A valid target keyword" +
                 " value is one of the following: target, targetscope, " +
-                "targetfilter, targetattr or targetattrfilters.");
+                "targetfilter, targetattr or targetattrfilters");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_TARGETS_OPERATOR,
                 "The provided Access Control Instruction (ACI) target " +
                 "keyword operator value  \"%s\" is invalid. A valid target" +
-                "keyword operator value is either '=' or \"!=\".");
+                "keyword operator value is either '=' or \"!=\"");
 
         registerMessage(MSGID_ACI_SYNTAX_TARGET_KEYWORD_NOT_SUPPORTED,
                 "The provided Access Control Instruction (ACI) " +
-                "target keyword value \"%s\" is not supported at this time.");
+                "target keyword value \"%s\" is not supported at this time");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_TARGET_DUPLICATE_KEYWORDS,
                 "The provided Access Control Instruction (ACI) " +
                 "target keyword value \"%s\" was seen multiple times in" +
-                " the ACI \"%s\".");
+                " the ACI \"%s\"");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_TARGET_NOT_OPERATOR,
                 "The provided Access Control Instruction (ACI) target" +
                 " operator value \"%s\" is invalid. The only valid" +
-                "target operator value for the \"%s\" keyword is '='.");
+                "target operator value for the \"%s\" keyword is '='");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_TARGETSCOPE_EXPRESSION,
                 "The provided Access Control Instruction (ACI) targetscope" +
                 " expression operator value  \"%s\" is invalid. A valid" +
                 " targetscope expression value is one of the following: one," +
-                " onelevel or subtree.");
+                " onelevel or subtree");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_TARGETKEYWORD_EXPRESSION,
                 "The provided Access Control Instruction (ACI)" +
                 " target expression value \"%s\" is invalid. A valid target" +
                 " keyword expression  value requires a LDAP URL in the" +
-                " following format: ldap:///distinguished_name_pattern.");
+                " following format: ldap:///distinguished_name_pattern");
 
         registerMessage(MSGID_ACI_SYNTAX_TARGET_DN_NOT_DESCENDENTOF,
                 "The provided Access Control Instruction (ACI) " +
                 "target expression DN value \"%s\" is invalid. The target " +
                 "expression DN value must be a descendant of the ACI entry" +
                 " DN \"%s\", if no wild-card is specified in the target" +
-                "expression DN.");
+                "expression DN");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_TARGETATTRKEYWORD_EXPRESSION,
                 "The provided Access Control Instruction (ACI) " +
                 "targetattr expression value \"%s\" is invalid. A valid " +
                 "targetattr keyword expression value requires one or more " +
                 "valid attribute type names in the following format: " +
-                "attribute1 [|| attribute1] ... [|| attributen].");
+                "attribute1 [|| attribute1] ... [|| attributen]");
 
         registerMessage(
                 MSGID_ACI_SYNTAX_INVALID_TARGETFILTERKEYWORD_EXPRESSION,
                 "The provided Access Control Instruction (ACI)" +
                 " targetfilter expression value \"%s\" is invalid because it" +
-                " is not a valid LDAP filter.");
+                " is not a valid LDAP filter");
 
         registerMessage(MSGID_ACI_ADD_FAILED_PRIVILEGE,
                 "An attempt to add the entry \"%s\" containing" +
                 " an aci attribute type failed, because the authorization DN" +
-                " \"%s\" lacked modify-acl privileges.");
+                " \"%s\" lacked modify-acl privileges");
 
         registerMessage(MSGID_ACI_MODIFY_FAILED_PRIVILEGE,
                 "An attempt to modify an aci "+
                 "attribute type in the entry \"%s\" failed, because the" +
-                "authorization DN \"%s\" lacked modify-acl privileges.");
+                "authorization DN \"%s\" lacked modify-acl privileges");
 
         registerMessage(MSGID_ACI_ADD_FAILED_DECODE,
                 "An attempt to add the entry \"%s\" containing" +
@@ -1038,24 +1038,24 @@
 
         registerMessage(MSGID_ACI_ADD_LIST_NO_ACIS,
                 "No Access Control Instruction (ACI) attribute types were" +
-                " found in context \"%s\".");
+                " found in context \"%s\"");
 
         registerMessage(MSGID_ACI_ADD_LIST_ACIS,
                 "Added %s Access Control Instruction (ACI) attribute types" +
                 " found in context \"%s\" to the access" +
-                "control evaluation engine.");
+                "control evaluation engine");
 
         registerMessage(
                 MSGID_ACI_SYNTAX_INVALID_USERATTR_ROLEDN_INHERITANCE_PATTERN,
                 "The provided Access Control Instruction (ACI) bind rule " +
                 "userattr expression inheritance pattern value " +
                 "\"%s\" is invalid for the roledn keyword because it starts " +
-                        "with the string \"parent[\".");
+                        "with the string \"parent[\"");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_TARGATTRFILTERS_OPERATION,
                 "The provided Access Control Instruction (ACI) " +
                 "targattrfilter expression value " +
-                "%s is invalid because %s.");
+                "%s is invalid because %s");
 
         registerMessage(MSGID_ACI_SYNTAX_INVALID_TARGATTRFILTERS_EXPRESSION,
                 "The provided Access Control Instruction (ACI) " +
@@ -1070,14 +1070,14 @@
                 "The provided Access Control Instruction (ACI) " +
                    "targattrfilter expression value " +
                    "%s is invalid because the both operation tokens " +
-                   "match in the two filter lists.");
+                   "match in the two filter lists");
 
         registerMessage(
                 MSGID_ACI_SYNTAX_INVALID_TARGATTRFILTERS_MAX_FILTER_LISTS,
                 "The provided Access Control Instruction (ACI) " +
                      "targattrfilters expression value " +
                      "%s is invalid because there are more than two" +
-                      "filter list statements.");
+                      "filter list statements");
 
         registerMessage(
                 MSGID_ACI_SYNTAX_INVALID_TARGATTRFILTERS_FILTER_LIST_FORMAT,
@@ -1086,7 +1086,7 @@
                 "%s is invalid because the provided filter list string " +
                 "is in the wrong format. A valid targattrfilters filter " +
                 "list must be in the following format: " +
-                "add=attr1: F1 && attr2: F2 ... && attrn: Fn .");
+                "add=attr1: F1 && attr2: F2 ... && attrn: Fn ");
 
         registerMessage(
              MSGID_ACI_SYNTAX_INVALID_TARGATTRFILTERS_FILTER_LISTS_FILTER,
@@ -1094,7 +1094,7 @@
              "targattrfilters expression value " +
              "%s is invalid because the one or more of the specified" +
              "filters are invalid for the following reason: " +
-             "%s.");
+             "%s");
 
         registerMessage(
              MSGID_ACI_SYNTAX_INVALID_TARGATTRFILTERS_FILTER_LISTS_ATTR_FILTER,
@@ -1102,7 +1102,7 @@
              "targattrfilters expression value " +
              "%s is invalid because the one or more of the specified" +
              "filters are invalid because of non-matching attribute" +
-             "type names in the filter.");
+             "type names in the filter");
 
         registerMessage(
              MSGID_ACI_SYNTAX_INVALID_ATTRIBUTE_TYPE_NAME,
@@ -1110,43 +1110,43 @@
              "attribute name value " +
              "%s is invalid. A valid attribute type name must begin " +
              "with an ASCII letter and must contain only ASCII letters," +
-              "digits or the \"-\" character.");
+              "digits or the \"-\" character");
 
         registerMessage(MSGID_ACI_DESCRIPTION_GLOBAL_ACI,
              "Specifies a global Access Control Instruction (ACI) "  +
              "attribute type that can be used to defined ACIs that have " +
-             "global scope accross naming contexts.");
+             "global scope accross naming contexts");
 
         registerMessage(MSGID_ACI_ADD_LIST_NO_GLOBAL_ACIS,
             "No Global Access Control Instruction (ACI) attribute types were" +
-           " found.");
+           " found");
 
         registerMessage(MSGID_ACI_ADD_LIST_GLOBAL_ACIS,
                 "Added %s Global Access Control Instruction (ACI) attribute " +
-                "types to the access control evaluation engine.");
+                "types to the access control evaluation engine");
 
         registerMessage(MSGID_ACI_HANDLER_FAIL_PROCESS_GLOBAL_ACI,
          "An unexpected error occurred while processing the " +
-         ATTR_AUTHZ_GLOBAL_ACI + " attribute in configuration entry %s.");
+         ATTR_AUTHZ_GLOBAL_ACI + " attribute in configuration entry %s");
 
         registerMessage(MSGID_ACI_HANDLER_FAIL_PROCESS_ACI,
          "An unexpected error occurred while processing the " +
-          " aci attributes in the configuration system.");
+          " aci attributes in the configuration system");
 
         registerMessage(MSGID_PATTERN_DN_CONSECUTIVE_WILDCARDS_IN_VALUE,
           "The pattern DN %s is not valid because it contains two " +
-               "consecutive wildcards in an attribute value.");
+               "consecutive wildcards in an attribute value");
 
         registerMessage(MSGID_PATTERN_DN_TYPE_CONTAINS_SUBSTRINGS,
           "The pattern DN %s is not valid because it uses wildcards for " +
                "substring matching on an attribute type.  A single wildcard " +
-               "is allowed in place of an attribute type.");
+               "is allowed in place of an attribute type");
 
         registerMessage(MSGID_PATTERN_DN_TYPE_WILDCARD_IN_MULTIVALUED_RDN,
           "The pattern DN %s is not valid because it contains a wildcard in " +
                "an attribute type in a multi-valued RDN");
 
       registerMessage(MSGID_ACI_HANDLER_CANNOT_LOCK_NEW_SUPERIOR_USER,
-          "Unable to obtain a lock on the ModifyDN new superior entry %s.");
+          "Unable to obtain a lock on the ModifyDN new superior entry %s");
     }
 }
diff --git a/opends/src/server/org/opends/server/messages/AdminMessages.java b/opends/src/server/org/opends/server/messages/AdminMessages.java
index 608483c..5ca2233 100644
--- a/opends/src/server/org/opends/server/messages/AdminMessages.java
+++ b/opends/src/server/org/opends/server/messages/AdminMessages.java
@@ -212,81 +212,81 @@
   public static void registerMessages() {
     registerMessage(MSGID_ADMIN_CANNOT_GET_LISTENER_BASE,
         "An error occurred while trying to "
-            + "retrieve relation configuration entry %s: %s.");
+            + "retrieve relation configuration entry %s: %s");
 
     registerMessage(MSGID_ADMIN_LISTENER_BASE_DOES_NOT_EXIST,
         "The relation entry %s does not appear to exist in the "
-            + "Directory Server configuration. This is a required entry.");
+            + "Directory Server configuration. This is a required entry");
 
     registerMessage(MSGID_ADMIN_CANNOT_GET_MANAGED_OBJECT,
         "An error occurred while trying to "
-            + "retrieve the managed object configuration entry %s: %s.");
+            + "retrieve the managed object configuration entry %s: %s");
 
     registerMessage(MSGID_ADMIN_MANAGED_OBJECT_DOES_NOT_EXIST,
         "The managed object configuration entry %s does not "
             + "appear to exist in the Directory Server "
-            + "configuration. This is a required entry.");
+            + "configuration. This is a required entry");
 
     registerMessage(MSGID_ADMIN_MANAGED_OBJECT_DECODING_PROBLEM,
         "An error occurred while trying to "
-            + "decode the managed object configuration entry %s: %s.");
+            + "decode the managed object configuration entry %s: %s");
 
     registerMessage(MSGID_ADMIN_CANNOT_INSTANTIATE_CLASS,
         "The Directory Server was unable to load class %s and "
             + "use it to create a component instance as "
             + "defined in configuration entry %s.  The error that "
-            + "occurred was:  %s.  This component will be " + "disabled.");
+            + "occurred was:  %s.  This component will be " + "disabled");
 
     registerMessage(MSGID_ADMIN_CANNOT_INITIALIZE_COMPONENT,
         "An error occurred while trying to initialize a " +
         "component instance loaded from class %s with the " +
         "information in configuration entry %s:  %s.  This " +
-        "component will be disabled.");
+        "component will be disabled");
 
     registerMessage(MSGID_ADMIN_COMPONENT_DISABLED,
         "The Directory Server component configured in " +
-        "entry %s has been disabled.");
+        "entry %s has been disabled");
 
     registerMessage(MSGID_ADMIN_CANNOT_OPEN_JAR_FILE,
         "The Directory Server jar file %s in directory %s cannot be " +
         "loaded because an unexpected error occurred while " +
-        "trying to open the file for reading:  %s.");
+        "trying to open the file for reading:  %s");
 
     registerMessage(MSGID_ADMIN_NO_EXTENSIONS_DIR,
         "The extensions directory %s does not exist, therefore no " +
-        "extensions will be loaded.");
+        "extensions will be loaded");
 
     registerMessage(MSGID_ADMIN_EXTENSIONS_DIR_NOT_DIRECTORY,
         "Unable to read the Directory Server extensions " +
         "because the extensions directory %s exists but is not a " +
-        "directory.");
+        "directory");
 
     registerMessage(MSGID_ADMIN_EXTENSIONS_CANNOT_LIST_FILES,
         "Unable to read the Directory Server extensions " +
         "from directory %s because an unexpected error occurred " +
-        "while trying to list the files in that directory:  %s.");
+        "while trying to list the files in that directory:  %s");
 
     registerMessage(MSGID_ADMIN_CANNOT_LOAD_CLASS_FROM_CORE_MANIFEST,
         "A core configuration definition class could not be loaded " +
         "from the core manifest file %s because an unexpected error " +
-        "occurred while trying to initialize it:  %s.");
+        "occurred while trying to initialize it:  %s");
 
     registerMessage(MSGID_ADMIN_CANNOT_LOAD_CLASS_FROM_EXTENSION_MANIFEST,
         "A configuration definition class could not be loaded " +
         "from the extension manifest file %s in extensions %s because an " +
-        "unexpected error occurred while trying to initialize it:  %s.");
+        "unexpected error occurred while trying to initialize it:  %s");
 
     registerMessage(MSGID_ADMIN_CANNOT_FIND_CORE_MANIFEST,
-        "The core administration manifest file %s cannot be located.");
+        "The core administration manifest file %s cannot be located");
 
     registerMessage(MSGID_ADMIN_CANNOT_READ_CORE_MANIFEST,
         "The core administration manifest file %s cannot be " +
         "loaded because an unexpected error occurred while " +
-        "trying to read it:  %s.");
+        "trying to read it:  %s");
 
     registerMessage(MSGID_ADMIN_CANNOT_READ_EXTENSION_MANIFEST,
         "The administration manifest file %s associated with the " +
         "extension %s cannot be loaded because an unexpected error " +
-        "occurred while trying to read it:  %s.");
+        "occurred while trying to read it:  %s");
   }
 }
diff --git a/opends/src/server/org/opends/server/messages/BackendMessages.java b/opends/src/server/org/opends/server/messages/BackendMessages.java
index 7c3d8a5..db31b15 100644
--- a/opends/src/server/org/opends/server/messages/BackendMessages.java
+++ b/opends/src/server/org/opends/server/messages/BackendMessages.java
@@ -3228,172 +3228,172 @@
                     "contains additional sub-suffixes and may not be " +
                     "de-registered.  It may be possible to remove this " +
                     "sub-suffix by editing the configuration for the " +
-                    "subordinate backend with which it is associated.");
+                    "subordinate backend with which it is associated");
     registerMessage(MSGID_BACKEND_CANNOT_LOCK_ENTRY,
                     "The Directory Server was unable to obtain a lock on " +
                     "entry %s after multiple attempts.  This could mean that " +
                     "the entry is already locked by a long-running operation " +
                     "or that the entry has previously been locked but was " +
-                    "not properly unlocked.");
+                    "not properly unlocked");
     registerMessage(MSGID_BACKEND_CANNOT_REGISTER_BASEDN,
                     "An error occurred while attempting to register base DN " +
-                    "in the Directory Server:  %s.");
+                    "in the Directory Server:  %s");
 
 
     registerMessage(MSGID_ROOTDSE_CONFIG_ENTRY_NULL,
                     "An attempt was made to configure the root DSE backend " +
                     "without providing a configuration entry.  This is not " +
-                    "allowed.");
+                    "allowed");
     registerMessage(MSGID_ROOTDSE_SUBORDINATE_BASE_DESCRIPTION,
                     "Specifies the set of base DNs that will be used for " +
                     "singleLevel, wholeSubtree, and subordinateSubtree " +
                     "searches based at the root DSE.  If this is not " +
                     "provided, then the set of all user-defined suffixes " +
-                    "will be used.");
+                    "will be used");
     registerMessage(MSGID_ROOTDSE_NO_BACKEND_FOR_SUBORDINATE_BASE,
                     "Base DN \"%s\" is configured as one of the subordinate " +
                     "base DNs to use for searches below the root DSE.  " +
                     "However, this base DN is not handled by any suffix " +
                     "registered with the Directory Server and will therefore " +
-                    "not be used.");
+                    "not be used");
     registerMessage(MSGID_ROOTDSE_SUBORDINATE_BASE_EXCEPTION,
                     "An unexpected problem occurred while trying to " +
                     "determine the set of subordinate base DNs to use for " +
-                    "searches below the root DSE:  %s.");
+                    "searches below the root DSE:  %s");
     registerMessage(MSGID_ROOTDSE_DESCRIPTION_SHOW_ALL_ATTRIBUTES,
                     "Indicates whether all attributes in the root DSE should " +
                     "be treated like user attributes (and therefore returned " +
                     "to clients by default) regardless of the Directory " +
-                    "Server schema configuration.");
+                    "Server schema configuration");
     registerMessage(MSGID_ROOTDSE_CANNOT_DETERMINE_ALL_USER_ATTRIBUTES,
                     "An error occurred while trying to determine the value " +
                     "of the %s configuration attribute, which controls " +
                     "whether to treat all root DSE attributes like user " +
                     "attributes:  %s.  The attributes in the root DSE will " +
                     "be treated based on their definition in the server " +
-                    "schema.");
+                    "schema");
     registerMessage(MSGID_ROOTDSE_GET_ENTRY_NONROOT,
                     "The root DSE backend was asked to retrieve entry with " +
                     "DN \"%s\".  This backend should only be asked to " +
                     "retrieve the root DSE itself.  However, it will check " +
                     "with the defined subordinate backends and see if it " +
-                    "can find the requested entry.");
+                    "can find the requested entry");
     registerMessage(MSGID_ROOTDSE_ADD_NOT_SUPPORTED,
                     "Unwilling to add entry \"%s\" because add operations " +
-                    "are not supported in the root DSE backend.");
+                    "are not supported in the root DSE backend");
     registerMessage(MSGID_ROOTDSE_DELETE_NOT_SUPPORTED,
                     "Unwilling to remove entry \"%s\" because delete " +
-                    "operations are not supported in the root DSE backend.");
+                    "operations are not supported in the root DSE backend");
     registerMessage(MSGID_ROOTDSE_MODIFY_NOT_SUPPORTED,
                     "Unwilling to update entry \"%s\" because modify " +
                     "operations are not supported in the root DSE backend.  " +
                     "If you wish to alter the contents of the root DSE " +
                     "itself, then it may be possible to do so by modifying " +
-                    "the \"%s\" entry in the configuration.");
+                    "the \"%s\" entry in the configuration");
     registerMessage(MSGID_ROOTDSE_MODIFY_DN_NOT_SUPPORTED,
                     "Unwilling to rename entry \"%s\" because modify DN " +
-                    "operations are not supported in the root DSE backend.");
+                    "operations are not supported in the root DSE backend");
     registerMessage(MSGID_ROOTDSE_INVALID_SEARCH_BASE,
                     "Unwilling to perform a search (connection ID %d, " +
                     "operation ID %d) with a base DN of \"%s\" in the root " +
                     "DSE backend.  The base DN for searches in this backend " +
-                    "must be the DN of the root DSE itself.");
+                    "must be the DN of the root DSE itself");
     registerMessage(MSGID_ROOTDSE_UNEXPECTED_SEARCH_FAILURE,
                     "An unexpected failure occurred while trying to process " +
                     "a search operation (connection ID %d, operation ID %d) " +
-                    "in the root DSE backend:  %s.");
+                    "in the root DSE backend:  %s");
     registerMessage(MSGID_ROOTDSE_INVALID_SEARCH_SCOPE,
                     "Unable to process the search with connection ID %d and " +
-                    "operation ID %d because it had an invalid scope of %s.");
+                    "operation ID %d because it had an invalid scope of %s");
     registerMessage(MSGID_ROOTDSE_UNABLE_TO_CREATE_LDIF_WRITER,
                     "An unexpected error occurred while trying to open the " +
-                    "LDIF writer for the root DSE backend:  %s.");
+                    "LDIF writer for the root DSE backend:  %s");
     registerMessage(MSGID_ROOTDSE_UNABLE_TO_EXPORT_DSE,
                     "An unexpected error occurred while trying to export the " +
-                    "root DSE entry to the specified LDIF target: %s.");
+                    "root DSE entry to the specified LDIF target: %s");
     registerMessage(MSGID_ROOTDSE_IMPORT_NOT_SUPPORTED,
                     "The root DSE backend does not support LDIF import " +
-                    "operations.");
+                    "operations");
     registerMessage(MSGID_ROOTDSE_BACKUP_AND_RESTORE_NOT_SUPPORTED,
                     "The root DSE backend does not provide a facility for " +
                     "backup and restore operations.  The contents of the " +
                     "root DSE should be backed up as part of the Directory " +
-                    "Server configuration.");
+                    "Server configuration");
     registerMessage(MSGID_ROOTDSE_USING_SUFFIXES_AS_BASE_DNS,
                     "The root DSE configuration has been updated so that it " +
                     "will now use the defined set of Directory Server " +
-                    "suffixes when performing searches below the root DSE.");
+                    "suffixes when performing searches below the root DSE");
     registerMessage(MSGID_ROOTDSE_USING_NEW_SUBORDINATE_BASE_DNS,
                     "The root DSE configuration has been updated so that it " +
                     "will now use the base DN set %s when performing " +
-                    "below the root DSE.");
+                    "below the root DSE");
     registerMessage(MSGID_ROOTDSE_UPDATED_SHOW_ALL_ATTRS,
                     "The root DSE configuration has been updated so that " +
-                    "configuration attribute %s will now use a value of %s.");
+                    "configuration attribute %s will now use a value of %s");
     registerMessage(MSGID_ROOTDSE_USING_NEW_USER_ATTRS,
                     "The root DSE configuration has been updated so that it " +
-                    "will now use a new set of user-defined attributes.");
+                    "will now use a new set of user-defined attributes");
 
 
     registerMessage(MSGID_MONITOR_CONFIG_ENTRY_NULL,
                     "An attempt was made to configure the monitor backend " +
                     "without providing a configuration entry.  This is not " +
                     "allowed, and no monitor information will be available " +
-                    "over protocol.");
+                    "over protocol");
     registerMessage(MSGID_MONITOR_CANNOT_DECODE_MONITOR_ROOT_DN,
                     "An unexpected error occurred while attempting to decode " +
                     DN_MONITOR_ROOT + " as the base DN for the Directory " +
                     "Server monitor information:  %s.  No monitor " +
-                    "information will be available over protocol.");
+                    "information will be available over protocol");
     registerMessage(MSGID_MONITOR_ADD_NOT_SUPPORTED,
                     "Unwilling to add entry \"%s\" because add operations " +
-                    "are not supported in the monitor backend.");
+                    "are not supported in the monitor backend");
     registerMessage(MSGID_MONITOR_DELETE_NOT_SUPPORTED,
                     "Unwilling to remove entry \"%s\" because delete " +
-                    "operations are not supported in the monitor backend.");
+                    "operations are not supported in the monitor backend");
     registerMessage(MSGID_MONITOR_MODIFY_NOT_SUPPORTED,
                     "Unwilling to update entry \"%s\" because modify " +
                     "operations are not supported in the monitor backend.  " +
                     "If you wish to alter the contents of the base monitor " +
                     "entry itself, then it may be possible to do so by " +
-                    "modifying the \"%s\" entry in the configuration.");
+                    "modifying the \"%s\" entry in the configuration");
     registerMessage(MSGID_MONITOR_MODIFY_DN_NOT_SUPPORTED,
                     "Unwilling to rename entry \"%s\" because modify DN " +
-                    "operations are not supported in the monitor backend.");
+                    "operations are not supported in the monitor backend");
     registerMessage(MSGID_MONITOR_UNABLE_TO_EXPORT_BASE,
                     "An error occurred while attempting to export the base " +
-                    "monitor entry:  %s.");
+                    "monitor entry:  %s");
     registerMessage(MSGID_MONITOR_UNABLE_TO_EXPORT_PROVIDER_ENTRY,
                     "An error occurred while attempting to export the " +
-                    "monitor entry for monitor provider %s:  %s.");
+                    "monitor entry for monitor provider %s:  %s");
     registerMessage(MSGID_MONITOR_IMPORT_NOT_SUPPORTED,
                     "The monitor backend does not support LDIF import " +
-                    "operations.");
+                    "operations");
     registerMessage(MSGID_MONITOR_BACKUP_AND_RESTORE_NOT_SUPPORTED,
                     "The monitor backend does not provide a facility for " +
-                    "backup and restore operations.");
+                    "backup and restore operations");
     registerMessage(MSGID_MONITOR_USING_NEW_USER_ATTRS,
                     "The monitor configuration has been updated so that it " +
-                    "will now use a new set of user-defined attributes.");
+                    "will now use a new set of user-defined attributes");
     registerMessage(MSGID_MONITOR_GET_ENTRY_NULL,
                     "Unable to retrieve the requested entry from the monitor " +
-                    "backend because the provided DN was null.");
+                    "backend because the provided DN was null");
     registerMessage(MSGID_MONITOR_BASE_TOO_DEEP,
                     "Unable to retrieve the requested entry %s from the " +
                     "monitor backend because the DN is too deep.  Monitor " +
-                    "entries may not be more than one level below %s.");
+                    "entries may not be more than one level below %s");
     registerMessage(MSGID_MONITOR_INVALID_BASE,
                     "Unable to retrieve the requested entry %s from the " +
                     "monitor backend because the DN is not below the monitor " +
-                    "base of %s.");
+                    "base of %s");
     registerMessage(MSGID_MONITOR_MULTIVALUED_RDN,
                     "Unable to retrieve the requested entry %s from the " +
                     "monitor backend because monitor entries may not contain " +
-                    "multivalued RDNs.");
+                    "multivalued RDNs");
     registerMessage(MSGID_MONITOR_NO_SUCH_PROVIDER,
                     "Unable to retrieve the requested entry from the monitor " +
                     "backend because there is no monitor provider \"%s\" " +
-                    "registered with the Directory Server.");
+                    "registered with the Directory Server");
     registerMessage(MSGID_MONITOR_UPTIME,
                     "%d days %d hours %d minutes %d seconds");
 
@@ -3402,7 +3402,7 @@
                     "An attempt was made to configure the schema backend " +
                     "without providing a configuration entry.  This is not " +
                     "allowed, and no schema information will be available " +
-                    "over protocol.");
+                    "over protocol");
     registerMessage(MSGID_SCHEMA_DESCRIPTION_ENTRY_DN,
                     "Specifies the DN or set of DNs for the entries that may " +
                     "be retrieved in order to retrieve the Directory Server " +
@@ -3410,7 +3410,7 @@
                     "if the schema is to be available in multiple " +
                     "locations for compatibility purposes.  If no value is " +
                     "provided, a default of \"" + DN_DEFAULT_SCHEMA_ROOT +
-                    "\" will be used.");
+                    "\" will be used");
     registerMessage(MSGID_SCHEMA_DESCRIPTION_SHOW_ALL_ATTRIBUTES,
                     "Indicates whether to treat attributes in the subschema " +
                     "entry as user attributes even if they are marked " +
@@ -3420,14 +3420,14 @@
                     "default even if they are not requested.  Note that the " +
                     "ldapSyntaxes attribute will always be treated as " +
                     "operational in order to avoid problems with attempts to " +
-                    "modify the schema over protocol.");
+                    "modify the schema over protocol");
     registerMessage(MSGID_SCHEMA_CANNOT_DETERMINE_BASE_DN,
                     "An error occurred while trying to determine the base " +
                     "DNs to use when publishing the Directory Server schema " +
                     "information, as specified in the " + ATTR_SCHEMA_ENTRY_DN +
                     " attribute of configuration entry %s:  %s.  The default " +
                     "schema base DN of " + DN_DEFAULT_SCHEMA_ROOT +
-                    " will be used.");
+                    " will be used");
     registerMessage(MSGID_SCHEMA_CANNOT_DETERMINE_SHOW_ALL,
                     "An error occurred while trying to determine whether to " +
                     "treat all subschema entry attributes as user attributes " +
@@ -3435,452 +3435,452 @@
                     "as specified in the " + ATTR_SCHEMA_SHOW_ALL_ATTRIBUTES +
                     " attribute of configuration entry %s:  %s.  The default " +
                     "behavior, which is to treat the attribute types as " +
-                    "defined in the server schema, will be used.");
+                    "defined in the server schema, will be used");
     registerMessage(MSGID_SCHEMA_CANNOT_FIND_CONCAT_FILE,
                     "Unable to find a file containing concatenated schema " +
                     "element definitions in order to determine if any schema " +
                     "changes were made with the server offline.  The " +
                     "file was expected in the %s directory and should have " +
-                    "been named either %s or %s.");
+                    "been named either %s or %s");
     registerMessage(MSGID_SCHEMA_ERROR_DETERMINING_SCHEMA_CHANGES,
                     "An error occurred while attempting to determine whether " +
                     "any schema changes had been made by directly editing " +
-                    "the schema files with the server offline:  %s.");
+                    "the schema files with the server offline:  %s");
     registerMessage(MSGID_SCHEMA_CANNOT_WRITE_CONCAT_SCHEMA_FILE,
                     "An error occurred while attempting to write file %s " +
                     "containing a concatenated list of all server schema " +
                     "elements:  %s.  The server may not be able to " +
                     "accurately identify any schema changes made with the " +
-                    "server offline.");
+                    "server offline");
     registerMessage(MSGID_SCHEMA_ADD_NOT_SUPPORTED,
                     "Unwilling to add entry \"%s\" because add operations " +
-                    "are not supported in the schema backend.");
+                    "are not supported in the schema backend");
     registerMessage(MSGID_SCHEMA_DELETE_NOT_SUPPORTED,
                     "Unwilling to remove entry \"%s\" because delete " +
-                    "operations are not supported in the schema backend.");
+                    "operations are not supported in the schema backend");
     registerMessage(MSGID_SCHEMA_MODIFY_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to modify the " +
-                    "Directory Server schema.");
+                    "Directory Server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_NOT_SUPPORTED,
                     "Unwilling to update entry \"%s\" because modify " +
                     "operations are not yet supported in the schema " +
                     "backend.  If you wish to alter the contents of the base " +
                     "schema entry itself, then it may be possible to do so " +
-                    "by modifying the \"%s\" entry in the configuration.");
+                    "by modifying the \"%s\" entry in the configuration");
     registerMessage(MSGID_SCHEMA_DELETE_MODTYPE_NOT_SUPPORTED,
                     "The schema backend does not currently support removing " +
-                    "existing schema elements.");
+                    "existing schema elements");
     registerMessage(MSGID_SCHEMA_INVALID_MODIFICATION_TYPE,
                     "The schema backend does not support the %s modification " +
-                    "type.");
+                    "type");
     registerMessage(MSGID_SCHEMA_MODIFY_UNSUPPORTED_ATTRIBUTE_TYPE,
                     "The schema backend does not support the modification of " +
                     "the %s attribute type.  Only attribute types, object " +
                     "classes, name forms, DIT content rules, DIT structure " +
-                    "rules, and matching rule uses may be modified.");
+                    "rules, and matching rule uses may be modified");
     registerMessage(MSGID_SCHEMA_MODIFY_CANNOT_DECODE_ATTRTYPE,
                     "An error occurred while attempting to decode the " +
-                    "attribute type \"%s\":  %s.");
+                    "attribute type \"%s\":  %s");
     registerMessage(MSGID_SCHEMA_MODIFY_ATTRTYPE_ALREADY_EXISTS,
                     "Unable to add attribute type  %s to the server schema " +
                     "because there is an existing attribute type with a " +
-                    "conflicting name or OID:  %s.");
+                    "conflicting name or OID:  %s");
     registerMessage(MSGID_SCHEMA_MODIFY_CANNOT_DECODE_OBJECTCLASS,
                     "An error occurred while attempting to decode the object " +
-                    "class \"%s\":  %s.");
+                    "class \"%s\":  %s");
     registerMessage(MSGID_SCHEMA_MODIFY_CANNOT_DECODE_NAME_FORM,
                     "An error occurred while attempting to decode the name " +
-                    "form \"%s\":  %s.");
+                    "form \"%s\":  %s");
     registerMessage(MSGID_SCHEMA_MODIFY_CANNOT_DECODE_DCR,
                     "An error occurred while attempting to decode the DIT " +
-                    "content rule \"%s\":  %s.");
+                    "content rule \"%s\":  %s");
     registerMessage(MSGID_SCHEMA_MODIFY_CANNOT_DECODE_DSR,
                     "An error occurred while attempting to decode the DIT " +
-                    "structure rule \"%s\":  %s.");
+                    "structure rule \"%s\":  %s");
     registerMessage(MSGID_SCHEMA_MODIFY_CANNOT_DECODE_MR_USE,
                     "An error occurred while attempting to decode the " +
-                    "matching rule use \"%s\":  %s.");
+                    "matching rule use \"%s\":  %s");
     registerMessage(MSGID_SCHEMA_MODIFY_DELETE_NO_VALUES,
                     "The server will not allow removing all values for the " +
-                    "%s attribute type in the server schema.");
+                    "%s attribute type in the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_UNDEFINED_SUPERIOR_OBJECTCLASS,
                     "Unable to add objectclass %s because its superior " +
-                    "class of %s is not defined in the server schema.");
+                    "class of %s is not defined in the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_OC_UNDEFINED_REQUIRED_ATTR,
                     "Unable to add objectclass %s because it requires " +
-                    "attribute %s which is not defined in the server schema.");
+                    "attribute %s which is not defined in the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_OC_UNDEFINED_OPTIONAL_ATTR,
                     "Unable to add objectclass %s because it allows " +
-                    "attribute %s which is not defined in the server schema.");
+                    "attribute %s which is not defined in the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_OBJECTCLASS_ALREADY_EXISTS,
                     "Unable to add objectclass %s to the server schema " +
                     "because there is an existing objectclass with a " +
                     "conflicting name or OID:  %s");
     registerMessage(MSGID_SCHEMA_MODIFY_CANNOT_READ_EXISTING_USER_SCHEMA,
                     "An error occurred while attempting to read the contents " +
-                    "of schema file %s:  %s.");
+                    "of schema file %s:  %s");
     registerMessage(MSGID_SCHEMA_MODIFY_CANNOT_WRITE_NEW_SCHEMA,
                     "An error occurred while attepting to write the updated " +
-                    "schema:  %s.");
+                    "schema:  %s");
     registerMessage(MSGID_SCHEMA_MODIFY_DN_NOT_SUPPORTED,
                     "Unwilling to rename entry \"%s\" because modify DN " +
-                    "operations are not supported in the schema backend.");
+                    "operations are not supported in the schema backend");
     registerMessage(MSGID_SCHEMA_UNABLE_TO_EXPORT_BASE,
                     "An error occurred while attempting to export the base " +
-                    "schema entry:  %s.");
+                    "schema entry:  %s");
     registerMessage(MSGID_SCHEMA_IMPORT_NOT_SUPPORTED,
                     "The schema backend does not support LDIF import " +
-                    "operations.");
+                    "operations");
     registerMessage(MSGID_SCHEMA_BACKUP_AND_RESTORE_NOT_SUPPORTED,
                     "The schema backend does not yet provide a facility for " +
-                    "backup and restore operations.");
+                    "backup and restore operations");
     registerMessage(MSGID_SCHEMA_INVALID_BASE,
                     "Unable to retrieve the requested entry %s from the " +
                     "schema backend because the DN is equal to one of the " +
-                    "schema entry DNs.");
+                    "schema entry DNs");
     registerMessage(MSGID_SCHEMA_UNABLE_TO_CREATE_LDIF_WRITER,
                     "An unexpected error occurred while trying to open the " +
-                    "LDIF writer for the schema backend:  %s.");
+                    "LDIF writer for the schema backend:  %s");
     registerMessage(MSGID_SCHEMA_DEREGISTERED_BASE_DN,
                     "Successfully deregistered DN %s so that it will no " +
-                    "longer be available as a schema entry DN.");
+                    "longer be available as a schema entry DN");
     registerMessage(MSGID_SCHEMA_CANNOT_DEREGISTER_BASE_DN,
                     "An error occurred while trying to deregister %s as a " +
-                    "schema entry DN:  %s.");
+                    "schema entry DN:  %s");
     registerMessage(MSGID_SCHEMA_REGISTERED_BASE_DN,
-                    "Successfully registered DN %s as a new schema entry DN.");
+                    "Successfully registered DN %s as a new schema entry DN");
     registerMessage(MSGID_SCHEMA_CANNOT_REGISTER_BASE_DN,
                     "An error occurred while trying to register %s as a " +
-                    "schema entry DN:  %s.");
+                    "schema entry DN:  %s");
     registerMessage(MSGID_SCHEMA_USING_NEW_USER_ATTRS,
                     "The schema configuration has been updated so that it " +
-                    "will now use a new set of user-defined attributes.");
+                    "will now use a new set of user-defined attributes");
     registerMessage(MSGID_SCHEMA_BACKUP_CANNOT_GET_MAC,
                     "An error occurred while attempting to obtain the %s MAC " +
-                    "provider to create the signed hash for the backup:  %s.");
+                    "provider to create the signed hash for the backup:  %s");
     registerMessage(MSGID_SCHEMA_BACKUP_CANNOT_GET_DIGEST,
                     "An error occurred while attempting to obtain the %s " +
-                    "message digest to create the hash for the backup:  %s.");
+                    "message digest to create the hash for the backup:  %s");
     registerMessage(MSGID_SCHEMA_BACKUP_CANNOT_CREATE_ARCHIVE_FILE,
                     "An error occurred while trying to create the schema " +
-                    "archive file %s in directory %s:  %s.");
+                    "archive file %s in directory %s:  %s");
     registerMessage(MSGID_SCHEMA_BACKUP_CANNOT_GET_CIPHER,
                     "An error occurred while attempting to obtain the %s " +
-                    "cipher to use to encrypt the backup:  %s.");
+                    "cipher to use to encrypt the backup:  %s");
     registerMessage(MSGID_SCHEMA_BACKUP_ZIP_COMMENT,
                     "%s schema backup %s");
     registerMessage(MSGID_SCHEMA_BACKUP_CANNOT_LIST_SCHEMA_FILES,
                     "An error occurred while attempting to obtain a list " +
                     "of the files in directory %s to include in the schema " +
-                    "backup:  %s.");
+                    "backup:  %s");
     registerMessage(MSGID_SCHEMA_BACKUP_CANNOT_BACKUP_SCHEMA_FILE,
                     "An error occurred while attempting to back up schema " +
-                    "file %s:  %s.");
+                    "file %s:  %s");
     registerMessage(MSGID_SCHEMA_BACKUP_CANNOT_CLOSE_ZIP_STREAM,
                     "An error occurred while trying to close the schema " +
-                    "archive file %s in directory %s:  %s.");
+                    "archive file %s in directory %s:  %s");
     registerMessage(MSGID_SCHEMA_BACKUP_CANNOT_UPDATE_BACKUP_DESCRIPTOR,
                     "An error occurred while attempting to update the backup " +
                     "descriptor file %s with information about the schema " +
-                    "backup:  %s.");
+                    "backup:  %s");
     registerMessage(MSGID_SCHEMA_MODIFY_MULTIPLE_CONFLICTS_FOR_ADD_ATTRTYPE,
                     "Unable to add attribute type %s because it conflicts " +
                     "with multiple existing attribute types (%s and " +
-                    "%s).");
+                    "%s)");
     registerMessage(MSGID_SCHEMA_MODIFY_UNDEFINED_SUPERIOR_ATTRIBUTE_TYPE,
                     "Unable to add attribute type %s because it references " +
                     "superior attribute type %s which is not defined in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_MULTIPLE_CONFLICTS_FOR_ADD_OBJECTCLASS,
                     "Unable to add objectclass %s because it conflicts with " +
-                    "multiple existing objectclasses (%s and %s).");
+                    "multiple existing objectclasses (%s and %s)");
     registerMessage(MSGID_SCHEMA_MODIFY_MULTIPLE_CONFLICTS_FOR_ADD_NAME_FORM,
                     "Unable to add name form %s because it conflicts with " +
-                    "multiple existing name forms (%s and %s).");
+                    "multiple existing name forms (%s and %s)");
     registerMessage(MSGID_SCHEMA_MODIFY_NF_UNDEFINED_STRUCTURAL_OC,
                     "Unable to add name form %s because it references " +
                     "structural objectclass %s which is not defined in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_NF_OC_NOT_STRUCTURAL,
                     "Unable to add name form %s because it references " +
                     "objectclass %s which is defined in the server schema " +
-                    "but is not a structural objectclass.");
+                    "but is not a structural objectclass");
     registerMessage(MSGID_SCHEMA_MODIFY_STRUCTURAL_OC_CONFLICT_FOR_ADD_NF,
                     "Unable to add name form %s because it references " +
                     "structural objectclass %s which is already associated " +
-                    "with another name form %s.");
+                    "with another name form %s");
     registerMessage(MSGID_SCHEMA_MODIFY_NF_UNDEFINED_REQUIRED_ATTR,
                     "Unable to add name form %s because it references " +
                     "required attribute type %s which is not defined in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_NF_UNDEFINED_OPTIONAL_ATTR,
                     "Unable to add name form %s because it references " +
                     "optional attribute type %s which is not defined in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_MULTIPLE_CONFLICTS_FOR_ADD_DCR,
                     "Unable to add DIT content rule %s because it conflicts " +
-                    "with multiple existing DIT content rules (%s and %s).");
+                    "with multiple existing DIT content rules (%s and %s)");
     registerMessage(MSGID_SCHEMA_MODIFY_STRUCTURAL_OC_CONFLICT_FOR_ADD_DCR,
                     "Unable to add DIT content rule %s because it " +
                     "references structural objectclass %s which is already " +
-                    "associated with another DIT content rule %s.");
+                    "associated with another DIT content rule %s");
     registerMessage(MSGID_SCHEMA_MODIFY_DCR_UNDEFINED_STRUCTURAL_OC,
                     "Unable to add DIT content rule %s because it " +
                     "references structural objectclass %s which is not " +
-                    "defined in the server schema.");
+                    "defined in the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_DCR_OC_NOT_STRUCTURAL,
                     "Unable to add DIT content rule %s because it " +
                     "references structural objectclass %s which is defined " +
-                    "in the server schema but is not structural.");
+                    "in the server schema but is not structural");
     registerMessage(MSGID_SCHEMA_MODIFY_DCR_UNDEFINED_AUXILIARY_OC,
                     "Unable to add DIT content rule %s because it " +
                     "references auxiliary objectclass %s which is not " +
-                    "defined in the server schema.");
+                    "defined in the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_DCR_UNDEFINED_REQUIRED_ATTR,
                     "Unable to add DIT content rule %s because it " +
                     "references required attribute type %s which is not " +
-                    "defined in the server schema.");
+                    "defined in the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_DCR_UNDEFINED_OPTIONAL_ATTR,
                     "Unable to add DIT content rule %s because it " +
                     "references optional attribute type %s which is not " +
-                    "defined in the server schema.");
+                    "defined in the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_DCR_UNDEFINED_PROHIBITED_ATTR,
                     "Unable to add DIT content rule %s because it " +
                     "references prohibited attribute type %s which is not " +
-                    "defined in the server schema.");
+                    "defined in the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_MULTIPLE_CONFLICTS_FOR_ADD_DSR,
                     "Unable to add DIT structure rule %s because it " +
                     "conflicts with multiple existing DIT structure rules " +
-                    "(%s and %s).");
+                    "(%s and %s)");
     registerMessage(MSGID_SCHEMA_MODIFY_NAME_FORM_CONFLICT_FOR_ADD_DSR,
                     "Unable to add DIT structure rule %s because it " +
                     "references name form %s which is already associated " +
-                    "with another DIT structure rule %s.");
+                    "with another DIT structure rule %s");
     registerMessage(MSGID_SCHEMA_MODIFY_DSR_UNDEFINED_NAME_FORM,
                     "Unable to add DIT structure rule %s because it " +
                     "references name form %s which is not defined in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_MULTIPLE_CONFLICTS_FOR_ADD_MR_USE,
                     "Unable to add matching rule use %s because it " +
                     "conflicts with multiple existing matching rule uses " +
-                    "(%s and %s).");
+                    "(%s and %s)");
     registerMessage(MSGID_SCHEMA_MODIFY_MR_CONFLICT_FOR_ADD_MR_USE,
                     "Unable to add matching rule use %s because it " +
                     "references matching rule %s which is already associated " +
-                    "with another matching rule use %s.");
+                    "with another matching rule use %s");
     registerMessage(MSGID_SCHEMA_MODIFY_MRU_UNDEFINED_ATTR,
                     "Unable to add matching rule use %s because it " +
                     "references attribute type %s which is not defined in " +
-                    "the server schema.");
+                    "the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_CIRCULAR_REFERENCE_AT,
                     "Circular reference detected for attribute type %s in " +
                     "which the superior type chain references the " +
-                    "attribute type itself.");
+                    "attribute type itself");
     registerMessage(MSGID_SCHEMA_MODIFY_CIRCULAR_REFERENCE_OC,
                     "Circular reference detected for objectclass %s in which " +
                     "the superior class chain references the objectclass " +
-                    "itself.");
+                    "itself");
     registerMessage(MSGID_SCHEMA_MODIFY_CIRCULAR_REFERENCE_DSR,
                     "Circular reference detected for DIT structure rule %s " +
                     "in which the superior rule chain references the DIT " +
-                    "structure rule itself.");
+                    "structure rule itself");
     registerMessage(MSGID_SCHEMA_MODIFY_CANNOT_WRITE_ORIG_FILES_CLEANED,
                     "An error occurred while attempting to create copies " +
                     "of the existing schema files before applying the " +
                     "updates:  %s.  The server was able to restore the " +
                     "original schema configuration, so no additional " +
-                    "cleanup should be required.");
+                    "cleanup should be required");
     registerMessage(MSGID_SCHEMA_MODIFY_CANNOT_WRITE_ORIG_FILES_NOT_CLEANED,
                     "An error occurred while attempting to create copies " +
                     "of the existing schema files before applying the " +
                     "updates:  %s.  A problem also occurred when attempting " +
                     "to restore the original schema configuration, so the " +
                     "server may be left in an inconsistent state and could " +
-                    "require manual cleanup.");
+                    "require manual cleanup");
     registerMessage(MSGID_SCHEMA_MODIFY_CANNOT_WRITE_NEW_FILES_RESTORED,
                     "An error occurred while attempting to write new " +
                     "versions of the server schema files:  %s.   The server " +
                     "was able to restore the original schema configuration, " +
-                    "so no additional cleanup should be required.");
+                    "so no additional cleanup should be required");
     registerMessage(MSGID_SCHEMA_MODIFY_CANNOT_WRITE_NEW_FILES_NOT_RESTORED,
                     "An error occrred while attempting to write new " +
                     "versions of the server schema files:  %s.  A problem " +
                     "also occured when attempting to restore the original " +
                     "schema configuration, so the server may be left in an " +
-                    "inconsistent state and could require manual cleanup.");
+                    "inconsistent state and could require manual cleanup");
     registerMessage(MSGID_SCHEMA_MODIFY_REMOVE_NO_SUCH_ATTRIBUTE_TYPE,
                     "Unable to remove attribute type %s from the server " +
-                    "schema because no such attribute type is defined.");
+                    "schema because no such attribute type is defined");
     registerMessage(MSGID_SCHEMA_MODIFY_REMOVE_AT_SUPERIOR_TYPE,
                     "Unable to remove attribute type %s from the server " +
                     "schema because it is referenced as the superior type " +
-                    "for attribute type %s.");
+                    "for attribute type %s");
     registerMessage(MSGID_SCHEMA_MODIFY_REMOVE_AT_IN_OC,
                     "Unable to remove attribute type %s from the server " +
                     "schema because it is referenced as a required or " +
-                    "optional attribute type in objectclass %s.");
+                    "optional attribute type in objectclass %s");
     registerMessage(MSGID_SCHEMA_MODIFY_REMOVE_AT_IN_NF,
                     "Unable to remove attribute type %s from the server " +
                     "schema because it is referenced as a required or " +
-                    "optional attribute type in name form %s.");
+                    "optional attribute type in name form %s");
     registerMessage(MSGID_SCHEMA_MODIFY_REMOVE_AT_IN_DCR,
                     "Unable to remove attribute type %s from the server " +
                     "schema because it is referenced as a required, " +
                     "optional, or prohibited attribute type in DIT content " +
-                    "rule %s.");
+                    "rule %s");
     registerMessage(MSGID_SCHEMA_MODIFY_REMOVE_AT_IN_MR_USE,
                     "Unable to remove attribute type %s from the server " +
                     "schema because it is referenced by matching rule use %s");
     registerMessage(MSGID_SCHEMA_MODIFY_REMOVE_NO_SUCH_OBJECTCLASS,
                     "Unable to remove objectclass %s from the server schema " +
-                    "because no such objectclass is defined.");
+                    "because no such objectclass is defined");
     registerMessage(MSGID_SCHEMA_MODIFY_REMOVE_OC_SUPERIOR_CLASS,
                     "Unable to remove objectclass %s from the server schema " +
                     "because it is referenced as the superior class for " +
-                    "objectclass %s.");
+                    "objectclass %s");
     registerMessage(MSGID_SCHEMA_MODIFY_REMOVE_OC_IN_NF,
                     "Unable to remove objectclass %s from the server schema " +
                     "because it is referenced as the structural class for " +
-                    "name form %s.");
+                    "name form %s");
     registerMessage(MSGID_SCHEMA_MODIFY_REMOVE_OC_IN_DCR,
                     "Unable to remove objectclass %s from the server schema " +
                     "because it is referenced as a structural or auxiliary " +
-                    "class for DIT content rule %s.");
+                    "class for DIT content rule %s");
     registerMessage(MSGID_SCHEMA_MODIFY_REMOVE_NO_SUCH_NAME_FORM,
                     "Unable to remove name form %s from the server schema " +
-                    "because no such name form is defined.");
+                    "because no such name form is defined");
     registerMessage(MSGID_SCHEMA_MODIFY_REMOVE_NF_IN_DSR,
                     "Unable to remove name form %s from the server schema " +
-                    "because it is referenced by DIT structure rule %s.");
+                    "because it is referenced by DIT structure rule %s");
     registerMessage(MSGID_SCHEMA_MODIFY_REMOVE_NO_SUCH_DCR,
                     "Unable to remove DIT content rule %s from the server " +
-                    "schema because no such DIT content rule is defined.");
+                    "schema because no such DIT content rule is defined");
     registerMessage(MSGID_SCHEMA_MODIFY_REMOVE_NO_SUCH_DSR,
                     "Unable to remove DIT structure rule %s from the server " +
-                    "schema because no such DIT structure rule is defined.");
+                    "schema because no such DIT structure rule is defined");
     registerMessage(MSGID_SCHEMA_MODIFY_REMOVE_DSR_SUPERIOR_RULE,
                     "Unable to remove DIT structure rule %s from the server " +
                     "schema because it is referenced as a superior rule for " +
-                    "DIT structure rule %s.");
+                    "DIT structure rule %s");
     registerMessage(MSGID_SCHEMA_MODIFY_REMOVE_NO_SUCH_MR_USE,
                     "Unable to remove matching rule use %s from the server " +
-                    "schema because no such matching rule use is defined.");
+                    "schema because no such matching rule use is defined");
     registerMessage(MSGID_SCHEMA_MODIFY_OBSOLETE_SUPERIOR_ATTRIBUTE_TYPE,
                     "Unable to add attribute type %s because the superior " +
-                    "type %s is marked as OBSOLETE in the server schema.");
+                    "type %s is marked as OBSOLETE in the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_ATTRTYPE_OBSOLETE_MR,
                     "Unable to add attribute type %s because the associated " +
                     "matching rule %s is marked as OBSOLETE in the server " +
-                    "schema.");
+                    "schema");
     registerMessage(MSGID_SCHEMA_MODIFY_OBSOLETE_SUPERIOR_OBJECTCLASS,
                     "Unable to add object class %s because the superior " +
-                    "class %s is marked as OBSOLETE in the server schema.");
+                    "class %s is marked as OBSOLETE in the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_OC_OBSOLETE_REQUIRED_ATTR,
                     "Unable to add object class %s because required " +
-                    "attribute %s is marked as OBSOLETE in the server schema.");
+                    "attribute %s is marked as OBSOLETE in the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_OC_OBSOLETE_OPTIONAL_ATTR,
                     "Unable to add object class %s because optional " +
-                    "attribute %s is marked as OBSOLETE in the server schema.");
+                    "attribute %s is marked as OBSOLETE in the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_NF_OC_OBSOLETE,
                     "Unable to add name form %s because its structural " +
                     "object class %s is marked as OBSOLETE in the server " +
-                    "schema.");
+                    "schema");
     registerMessage(MSGID_SCHEMA_MODIFY_NF_OBSOLETE_REQUIRED_ATTR,
                     "Unable to add name form %s because it requires " +
                     "attribute type %s which is marked as OBSOLETE in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_NF_OBSOLETE_OPTIONAL_ATTR,
                     "Unable to add name form %s because it allows " +
                     "attribute type %s which is marked as OBSOLETE in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_DCR_STRUCTURAL_OC_OBSOLETE,
                     "Unable to add DIT content rule %s because its " +
                     "structural object class %s is marked as OBSOLETE in " +
-                    "the server schema.");
+                    "the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_DCR_OC_NOT_AUXILIARY,
                     "Unable to add DIT content rule %s because it references " +
                     "auxiliary object class %s which is defined in the " +
-                    "server schema but is not an auxiliary class.");
+                    "server schema but is not an auxiliary class");
     registerMessage(MSGID_SCHEMA_MODIFY_DCR_OBSOLETE_AUXILIARY_OC,
                     "Unable to add DIT content rule %s because it references " +
                     "auxiliary object class %s which is marked as OBSOLETE " +
-                    "in the server schema.");
+                    "in the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_DCR_AUXILIARY_OC_OBSOLETE,
                     "Unable to add DIT content rule %s because it allows " +
                     "auxiliary object class %s which is marked as OBSOLETE " +
-                    "in the server schema.");
+                    "in the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_DCR_OBSOLETE_REQUIRED_ATTR,
                     "Unable to add DIT content rule %s because it requires " +
                     "attribute type %s which is marked as OBSOLETE in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_DCR_OBSOLETE_OPTIONAL_ATTR,
                     "Unable to add DIT content rule %s because it allows " +
                     "attribute type %s which is marked as OBSOLETE in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_DCR_OBSOLETE_PROHIBITED_ATTR,
                     "Unable to add DIT content rule %s because it prohibits " +
                     "attribute type %s which is marked as OBSOLETE in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_DSR_OBSOLETE_NAME_FORM,
                     "Unable to add DIT structure rule %s because its name " +
-                    "form %s is marked OBSOLETE in the server schema.");
+                    "form %s is marked OBSOLETE in the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_DSR_OBSOLETE_SUPERIOR_RULE,
                     "Unable to add DIT structure rule %s because it " +
                     "references superior rule %s whihc is marked as OBSOLETE " +
-                    "in the server schema.");
+                    "in the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_MRU_OBSOLETE_MR,
                     "Unable to add matching rule use %s because its matching " +
-                    "rule %s is marked OBSOLETE in the server schema.");
+                    "rule %s is marked OBSOLETE in the server schema");
     registerMessage(MSGID_SCHEMA_MODIFY_MRU_OBSOLETE_ATTR,
                     "Unable to add matching rule use %s because it " +
                     "references attribute type %s which is marked as " +
-                    "OBSOLETE in the server schema.");
+                    "OBSOLETE in the server schema");
 
 
     registerMessage(MSGID_SCHEMA_RESTORE_NO_SUCH_BACKUP,
                     "Unable to restore or verify schema backup %s in " +
-                    "directory %s because no such backup exists.");
+                    "directory %s because no such backup exists");
     registerMessage(MSGID_SCHEMA_RESTORE_NO_BACKUP_FILE,
                     "Unable to restore or verify schema backup %s in " +
                     "directory %s because the archive filename could not be " +
-                    "determined.");
+                    "determined");
     registerMessage(MSGID_SCHEMA_RESTORE_NO_SUCH_FILE,
                     "Unable to restore or verify schema backup %s because " +
-                    "the specified archive file %s does not exist.");
+                    "the specified archive file %s does not exist");
     registerMessage(MSGID_SCHEMA_RESTORE_CANNOT_CHECK_FOR_ARCHIVE,
                     "Unable to restore or verify schema backup %s because " +
                     "an error occurred while trying to determine whether " +
-                    "backup archive %s exists:  %s.");
+                    "backup archive %s exists:  %s");
     registerMessage(MSGID_SCHEMA_RESTORE_UNKNOWN_DIGEST,
                     "Unable to restore or verify schema backup %s because " +
                     "an unsigned hash of this backup is available but the " +
                     "server cannot determine the digest algorithm used to " +
-                    "generate this hash.");
+                    "generate this hash");
     registerMessage(MSGID_SCHEMA_RESTORE_CANNOT_GET_DIGEST,
                     "Unable to restore or verify schema backup %s because " +
                     "it has an unsigned hash that uses an unknown or " +
-                    "unsupported digest algorithm of %s.");
+                    "unsupported digest algorithm of %s");
     registerMessage(MSGID_SCHEMA_RESTORE_UNKNOWN_MAC,
                     "Unable to restore or verify schema backup %s because " +
                     "a signed hash of this backup is available but the " +
                     "server cannot determine the MAC algorithm used to " +
-                    "generate this hash.");
+                    "generate this hash");
     registerMessage(MSGID_SCHEMA_RESTORE_CANNOT_GET_MAC,
                     "Unable to restore or verify schema backup %s because " +
                     "it has a signed hash that uses an unknown or " +
-                    "unsupported MAC algorithm of %s.");
+                    "unsupported MAC algorithm of %s");
     registerMessage(MSGID_SCHEMA_RESTORE_CANNOT_OPEN_BACKUP_FILE,
                     "Unable to restore or verify schema backup %s because " +
                     "an error occurred while attempting to open the backup " +
-                    "archive file %s:  %s.");
+                    "archive file %s:  %s");
     registerMessage(MSGID_SCHEMA_RESTORE_UNKNOWN_CIPHER,
                     "Unable to restore or verify schema backup %s because " +
                     "it is encrypted but the server cannot determine the " +
-                    "cipher used to perform this encryption.");
+                    "cipher used to perform this encryption");
     registerMessage(MSGID_SCHEMA_RESTORE_CANNOT_GET_CIPHER,
                     "Unable to restore or verify schema backup %s because " +
                     "it is encrypted using an unknown or unsupported cipher " +
-                    "of %s.");
+                    "of %s");
     registerMessage(MSGID_SCHEMA_RESTORE_CANNOT_RENAME_CURRENT_DIRECTORY,
                     "Unable to restore schema backup %s because an error " +
                     "occurred while attempting to rename the current " +
@@ -3890,126 +3890,126 @@
                     "being properly restored.  However, the original schema " +
                     "files that were in place before the start of the " +
                     "restore process have been preserved and are now in " +
-                    "their original location of %s.");
+                    "their original location of %s");
     registerMessage(MSGID_SCHEMA_RESTORE_CANNOT_RESTORE_OLD_SCHEMA,
                     "An error occurred that prevented the schema backup from " +
                     "being properly restored.  The original schema files " +
                     "that were in place before the start of the restore " +
                     "process have been preserved and are contained in the %s " +
-                    "directory.");
+                    "directory");
     registerMessage(MSGID_SCHEMA_RESTORE_CANNOT_CREATE_SCHEMA_DIRECTORY,
                     "Unable to restore schema backup %s because an error " +
                     "occurred while attempting to create a new empty " +
                     "directory %s into which the files should be restored:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_SCHEMA_RESTORE_OLD_SCHEMA_SAVED,
                     "An error occurred that prevented the schema backup from " +
                     "being properly restored.  The original schema files " +
                     "that were in place before the start of the restore " +
-                    "process have been preserved in the %s directory.");
+                    "process have been preserved in the %s directory");
     registerMessage(MSGID_SCHEMA_RESTORE_CANNOT_GET_ZIP_ENTRY,
                     "Unable to restore or verify schema backup %s because " +
                     "an error occurred while trying to read the next entry " +
-                    "from the archive file %s:  %s.");
+                    "from the archive file %s:  %s");
     registerMessage(MSGID_SCHEMA_RESTORE_CANNOT_CREATE_FILE,
                     "Unable to restore schema backup %s because an error " +
-                    "occurred while trying to recreate file %s:  %s.");
+                    "occurred while trying to recreate file %s:  %s");
     registerMessage(MSGID_SCHEMA_RESTORE_CANNOT_PROCESS_ARCHIVE_FILE,
                     "Unable to restore or verify schema backup %s because " +
                     "an error occurred while processing archived file %s:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_SCHEMA_RESTORE_ERROR_ON_ZIP_STREAM_CLOSE,
                     "Unable to restore or verify schema backup %s because an " +
                     "unexpected error occurred while trying to close the " +
-                    "archive file %s:  %s.");
+                    "archive file %s:  %s");
     registerMessage(MSGID_SCHEMA_RESTORE_UNSIGNED_HASH_VALID,
                     "The message digest calculated from the backup archive " +
-                    "matches the digest stored with the backup information.");
+                    "matches the digest stored with the backup information");
     registerMessage(MSGID_SCHEMA_RESTORE_UNSIGNED_HASH_INVALID,
                     "Unable to restore or verify schema backup %s because " +
                     "the message digest calculated from the backup archive " +
                     "does not match the digest stored with the backup " +
-                    "information.");
+                    "information");
     registerMessage(MSGID_SCHEMA_RESTORE_SIGNED_HASH_VALID,
                     "The signed digest calculated from the backup archive " +
                     "matches the signature stored with the backup " +
-                    "information.");
+                    "information");
     registerMessage(MSGID_SCHEMA_RESTORE_SIGNED_HASH_INVALID,
                     "Unable to restore or verify schema backup %s because " +
                     "the signed digest calculated from the backup archive " +
                     "does not match the signature stored with the backup " +
-                    "information.");
+                    "information");
     registerMessage(MSGID_SCHEMA_RESTORE_VERIFY_SUCCESSFUL,
                     "All tests performed on schema backup %s from directory " +
-                    "%s show that the archive appears to be valid.");
+                    "%s show that the archive appears to be valid");
     registerMessage(MSGID_SCHEMA_RESTORE_SUCCESSFUL,
                     "Schema backup %s was successfully restored from the " +
-                    "archive in directory %s.");
+                    "archive in directory %s");
 
 
     registerMessage(MSGID_TASK_INVALID_STATE,
                     "The task defined in entry %s is invalid because it has " +
-                    "an invalid state %s.");
+                    "an invalid state %s");
     registerMessage(MSGID_TASK_CANNOT_PARSE_SCHEDULED_START_TIME,
                     "An error occurred while trying to parse the scheduled " +
-                    "start time value %s from task entry %s.");
+                    "start time value %s from task entry %s");
     registerMessage(MSGID_TASK_CANNOT_PARSE_ACTUAL_START_TIME,
                     "An error occurred while trying to parse the actual " +
-                    "start time value %s from task entry %s.");
+                    "start time value %s from task entry %s");
     registerMessage(MSGID_TASK_CANNOT_PARSE_COMPLETION_TIME,
                     "An error occurred while trying to parse the completion " +
-                    "time value %s from task entry %s.");
+                    "time value %s from task entry %s");
     registerMessage(MSGID_TASK_MISSING_ATTR,
-                    "Task entry %s is missing required attribute %s.");
+                    "Task entry %s is missing required attribute %s");
     registerMessage(MSGID_TASK_MULTIPLE_ATTRS_FOR_TYPE,
                     "There are multiple instances of attribute %s in task " +
-                    "entry %s.");
+                    "entry %s");
     registerMessage(MSGID_TASK_NO_VALUES_FOR_ATTR,
-                    "There are no values for attribute %s in task entry %s.");
+                    "There are no values for attribute %s in task entry %s");
     registerMessage(MSGID_TASK_MULTIPLE_VALUES_FOR_ATTR,
                     "There are multiple values for attribute %s in task " +
-                    "entry %s.");
+                    "entry %s");
     registerMessage(MSGID_TASK_EXECUTE_FAILED,
                     "An error occurred while executing the task defined in " +
-                    "entry %s:  %s.");
+                    "entry %s:  %s");
 
 
     registerMessage(MSGID_RECURRINGTASK_NO_ID_ATTRIBUTE,
                     "The provided recurring task entry does not contain " +
                     "attribute %s which is needed to hold the recurring task " +
-                    "ID.");
+                    "ID");
     registerMessage(MSGID_RECURRINGTASK_MULTIPLE_ID_TYPES,
                     "The provided recurring task entry contains multiple " +
                     "attributes with type %s, which is used to hold the " +
                     "recurring task ID, but only a single instance is " +
-                    "allowed.");
+                    "allowed");
     registerMessage(MSGID_RECURRINGTASK_NO_ID,
                     "The provided recurring task entry does not contain any " +
                     "values for the %s attribute, which is used to specify " +
-                    "the recurring task ID.");
+                    "the recurring task ID");
     registerMessage(MSGID_RECURRINGTASK_MULTIPLE_ID_VALUES,
                     "The provided recurring task entry contains multiple " +
                     "values for the %s attribute, which is used to specify " +
                     "the recurring task ID, but only a single value is " +
-                    "allowed.");
+                    "allowed");
     registerMessage(MSGID_RECURRINGTASK_NO_CLASS_ATTRIBUTE,
                     "The provided recurring task entry does not contain " +
                     "attribute %s which is needed to specify the " +
                     "fully-qualified name of the class providing the task " +
-                    "logic.");
+                    "logic");
     registerMessage(MSGID_RECURRINGTASK_MULTIPLE_CLASS_TYPES,
                     "The provided recurring task entry contains multiple " +
                     "attributes with type %s, which is used to hold the " +
-                    "task class name, but only a single instance is allowed.");
+                    "task class name, but only a single instance is allowed");
     registerMessage(MSGID_RECURRINGTASK_NO_CLASS_VALUES,
                     "The provided recurring task entry does not contain any " +
                     "values for the %s attribute, which is used to specify " +
                     "the fully-qualified name of the class providing the " +
-                    "task logic.");
+                    "task logic");
     registerMessage(MSGID_RECURRINGTASK_MULTIPLE_CLASS_VALUES,
                     "The provided recurring task entry contains multiple " +
                     "values for the %s attribute, which is used to specify " +
-                    "the task class name, but only a single value is allowed.");
+                    "the task class name, but only a single value is allowed");
     registerMessage(MSGID_RECURRINGTASK_CANNOT_LOAD_CLASS,
                     "An error occurred while attempting to load class %s " +
                     "specified in attribute %s of the provided recurring " +
@@ -4022,90 +4022,90 @@
     registerMessage(MSGID_RECURRINGTASK_CANNOT_INITIALIZE_INTERNAL,
                     "An error occurred while attempting to perform internal " +
                     "initialization on an instance of class %s with the " +
-                    "information contained in the provided entry:  %s.");
+                    "information contained in the provided entry:  %s");
 
 
     registerMessage(MSGID_TASKBE_CONFIG_ENTRY_NULL,
                     "The configuration entry provided when attempting to " +
-                    "initialize the task backend was null.");
+                    "initialize the task backend was null");
     registerMessage(MSGID_TASKBE_NO_BASE_DNS,
                     "The task backend configuration entry does not contain " +
                     "any base DNs.  There must be exactly one base DN for " +
-                    "task information in the Directory Server.");
+                    "task information in the Directory Server");
     registerMessage(MSGID_TASKBE_MULTIPLE_BASE_DNS,
                     "The task backend configuration entry contains multiple " +
                     "base DNs.  There must be exactly one base DN for task " +
-                    "information in the Directory Server.");
+                    "information in the Directory Server");
     registerMessage(MSGID_TASKBE_CANNOT_DECODE_RECURRING_TASK_BASE_DN,
                     "An error occurred while attempting to decode recurring " +
-                    "task base %s as a DN:  %s.");
+                    "task base %s as a DN:  %s");
     registerMessage(MSGID_TASKBE_CANNOT_DECODE_SCHEDULED_TASK_BASE_DN,
                     "An error occurred while attempting to decode scheduled " +
-                    "task base %s as a DN:  %s.");
+                    "task base %s as a DN:  %s");
     registerMessage(MSGID_TASKBE_DESCRIPTION_RETENTION_TIME,
                     "Specifies the length of time in seconds that task " +
                     "information should be retained after processing on that " +
                     "task has completed.  Once this period has passed, the " +
                     "task information will be automatically removed to " +
-                    "conserve memory and disk space.");
+                    "conserve memory and disk space");
     registerMessage(MSGID_TASKBE_CANNOT_INITIALIZE_RETENTION_TIME,
                     "An unexpected error occurred while attempting to " +
-                    "initialize the task retention time configuration:  %s.");
+                    "initialize the task retention time configuration:  %s");
     registerMessage(MSGID_TASKBE_DESCRIPTION_BACKING_FILE,
                     "Specifies the path to the backing file for the task " +
                     "backend.  This LDIF file will hold all the " +
                     "configuration for the defined scheduled tasks and " +
-                    "recurring tasks.");
+                    "recurring tasks");
     registerMessage(MSGID_TASKBE_CANNOT_INITIALIZE_BACKING_FILE,
                     "An unexpected error occurred while attempting to " +
-                    "initialize the task backing file configuration:  %s.");
+                    "initialize the task backing file configuration:  %s");
     registerMessage(MSGID_TASKBE_NO_BACKING_FILE,
                     "The updated configuration entry does not have a value " +
                     "for the required %s attribute, which specifies the " +
-                    "path to the task data backing file.");
+                    "path to the task data backing file");
     registerMessage(MSGID_TASKBE_BACKING_FILE_EXISTS,
                     "The specified task data backing file %s already exists " +
                     "and the Directory Server will not attempt to overwrite " +
                     "it.  Please delete or rename the existing file before " +
                     "attempting to use that path for the new backing file, " +
-                    "or choose a new path.");
+                    "or choose a new path");
     registerMessage(MSGID_TASKBE_INVALID_BACKING_FILE_PATH,
                     "The specified path %s for the new task data backing " +
                     "file appears to be an invalid path.  Please choose a " +
-                    "new path for the task data backing file.");
+                    "new path for the task data backing file");
     registerMessage(MSGID_TASKBE_BACKING_FILE_MISSING_PARENT,
                     "The parent directory %s for the new task data backing " +
                     "file %s does not exist.  Please create this directory " +
                     "before attempting to use this path for the new backing " +
-                    "file or choose a new path.");
+                    "file or choose a new path");
     registerMessage(MSGID_TASKBE_BACKING_FILE_PARENT_NOT_DIRECTORY,
                     "The parent directory %s for the new task data backing " +
                     "file %s exists but is not a directory.  Please choose a " +
-                    "new path for the task data backing file.");
+                    "new path for the task data backing file");
     registerMessage(MSGID_TASKBE_ERROR_GETTING_BACKING_FILE,
                     "An error occurred while attempting to determine the " +
-                    "new path to the task data backing file:  %s.");
+                    "new path to the task data backing file:  %s");
     registerMessage(MSGID_TASKBE_NO_RETENTION_TIME,
                     "The updated configuration entry does not have a value " +
                     "for the required %s attribute, which specifies the " +
                     "length of time in seconds that information about " +
                     "completed tasks should be retained before they are " +
-                    "cleaned up.");
+                    "cleaned up");
     registerMessage(MSGID_TASKBE_ERROR_GETTING_RETENTION_TIME,
                     "An error occurred while attempting to determine the " +
-                    "completed task retention time:  %s.");
+                    "completed task retention time:  %s");
     registerMessage(MSGID_TASKBE_UPDATED_RETENTION_TIME,
                     "The completed task retention time has been updated to " +
-                    "%d seconds.  This will take effect immediately.");
+                    "%d seconds.  This will take effect immediately");
     registerMessage(MSGID_TASKBE_UPDATED_BACKING_FILE,
                     "The path to the task data backing file has been changed " +
                     "to %s.  A snapshot of the current task configuration " +
                     "has been written to that file and it will continue to " +
-                    "be used for future updates.");
+                    "be used for future updates");
     registerMessage(MSGID_TASKBE_ADD_DISALLOWED_DN,
                     "New entries in the task backend may only be added " +
                     "immediately below %s for scheduled tasks or immediately " +
-                    "below %s for recurring tasks.");
+                    "below %s for recurring tasks");
     registerMessage(MSGID_TASKBE_DELETE_INVALID_ENTRY,
                     "Unable to remove entry %s from the task backend because " +
                     "its DN is either not appropriate for that backend or it " +
@@ -4113,77 +4113,77 @@
     registerMessage(MSGID_TASKBE_DELETE_NO_SUCH_TASK,
                     "Unable to remove entry %s from the task backend because " +
                     "there is no scheduled task associated with that entry " +
-                    "DN.");
+                    "DN");
     registerMessage(MSGID_TASKBE_DELETE_RUNNING,
                     "Unable to delete entry %s from the task backend because " +
-                    "the associated task is currently running.");
+                    "the associated task is currently running");
     registerMessage(MSGID_TASKBE_DELETE_NO_SUCH_RECURRING_TASK,
                     "Unable to remove entry %s from the task backend because " +
                     "there is no recurring task associated with that entry " +
-                    "DN.");
+                    "DN");
     registerMessage(MSGID_TASKBE_MODIFY_DN_NOT_SUPPORTED,
                     "Modify DN operations are not supported in the task " +
-                    "backend.");
+                    "backend");
     registerMessage(MSGID_TASKBE_SEARCH_INVALID_BASE,
                     "Unable to process the search operation in the task " +
                     "backend because the provided base DN %s is not valid " +
-                    "for entries in the task backend.");
+                    "for entries in the task backend");
     registerMessage(MSGID_TASKBE_SEARCH_NO_SUCH_TASK,
                     "Unable to process the search operation in the task " +
                     "backend because there is no scheduled task associated " +
-                    "with the provided search base entry %s.");
+                    "with the provided search base entry %s");
     registerMessage(MSGID_TASKBE_SEARCH_NO_SUCH_RECURRING_TASK,
                     "Unable to process the search operation in the task " +
                     "backend because there is no recurring task associated " +
-                    "with the provided search base entry %s.");
+                    "with the provided search base entry %s");
     registerMessage(MSGID_TASKBE_BACKING_FILE_HEADER,
                     "This file contains the data used by the Directory " +
                     "Server task scheduler backend.  Do not edit this file " +
                     "directly, as there is a risk that those changes will be " +
                     "lost.  Scheculed and recurring task definitions should " +
                     "only be edited using the administration utilities " +
-                    "provided with the Directory Server.");
+                    "provided with the Directory Server");
     registerMessage(MSGID_TASKBE_IMPORT_NOT_SUPPORTED,
                     "The task backend does not support LDIF import " +
-                    "operations.");
+                    "operations");
     registerMessage(MSGID_TASKBE_INTERRUPTED_BY_SHUTDOWN,
-                    "The tasks backend is being shut down.");
+                    "The tasks backend is being shut down");
 
 
     registerMessage(MSGID_TASKSCHED_DUPLICATE_RECURRING_ID,
                     "Unable to add recurring task %s to the task scheduler " +
                     "because another recurring task already exists with the " +
-                    "same ID.");
+                    "same ID");
     registerMessage(MSGID_TASKSCHED_REMOVE_RECURRING_EXISTING_ITERATION,
                     "Unable to remove recurring task %s because there is " +
                     "already a scheduled iteration of that task with ID %s " +
-                    "that must be removed first.");
+                    "that must be removed first");
     registerMessage(MSGID_TASKSCHED_REMOVE_PENDING_NO_SUCH_TASK,
                     "Unable to remove pending task %s because no such task " +
-                    "exists.");
+                    "exists");
     registerMessage(MSGID_TASKSCHED_REMOVE_PENDING_NOT_PENDING,
                     "Unable to remove pending task %s because the task is " +
-                    "no longer pending.");
+                    "no longer pending");
     registerMessage(MSGID_TASKSCHED_REMOVE_COMPLETED_NO_SUCH_TASK,
                     "Unable to remove completed task %s because no such " +
-                    "task exists in the list of completed tasks.");
+                    "task exists in the list of completed tasks");
     registerMessage(MSGID_TASKSCHED_DUPLICATE_TASK_ID,
                     "Unable to schedule task %s because another task already " +
-                    "exists with the same ID.");
+                    "exists with the same ID");
     registerMessage(MSGID_TASKSCHED_CANNOT_FIND_RECURRING_TASK,
                     "Task %s has completed processing and indicates that it " +
                     "is associated with recurring task %s but no recurring " +
                     "task with that ID is currently defined so it is not " +
-                    "possible to schedule the next iteration.");
+                    "possible to schedule the next iteration");
     registerMessage(MSGID_TASKSCHED_ERROR_SCHEDULING_RECURRING_ITERATION,
                     "An error occurred while attempting to schedule the next " +
-                    "iteration of recurring task %s:  %s.");
+                    "iteration of recurring task %s:  %s");
     registerMessage(MSGID_TASKSCHED_CANNOT_PARSE_ENTRY_RECOVERABLE,
                     "An error occurred while attempting to read an entry " +
                     "from the tasks backing file %s on or near line %d:  " +
                     "%s.  This is not a fatal error, so the task scheduler " +
                     "will attempt to continue parsing the file and schedule " +
-                    "any additional tasks that it contains.");
+                    "any additional tasks that it contains");
     registerMessage(MSGID_TASKSCHED_CANNOT_PARSE_ENTRY_FATAL,
                     "An error occurred while attempting to read an entry " +
                     "from the tasks backing file %s on or near line %d:  " +
@@ -4192,41 +4192,41 @@
     registerMessage(MSGID_TASKSCHED_ENTRY_HAS_NO_PARENT,
                     "Entry %s read from the tasks backing file is invalid " +
                     "because it has no parent and does not match the task " +
-                    "root DN of %s.");
+                    "root DN of %s");
     registerMessage(MSGID_TASKSCHED_CANNOT_SCHEDULE_RECURRING_TASK_FROM_ENTRY,
                     "An error occurred while attempting to parse entry %s " +
-                    "as a recurring task and add it to the scheduler:  %s.");
+                    "as a recurring task and add it to the scheduler:  %s");
     registerMessage(MSGID_TASKSCHED_CANNOT_SCHEDULE_TASK_FROM_ENTRY,
                     "An error occurred while attempting to parse entry %s " +
-                    "as a task and add it to the scheduler:  %s.");
+                    "as a task and add it to the scheduler:  %s");
     registerMessage(MSGID_TASKSCHED_INVALID_TASK_ENTRY_DN,
                     "Entry %s read from the tasks backing file %s has a DN " +
                     "which is not valid for a task or recurring task " +
-                    "definition and will be ignored.");
+                    "definition and will be ignored");
     registerMessage(MSGID_TASKSCHED_ERROR_READING_TASK_BACKING_FILE,
                     "An error occurred while attempting to read from the " +
-                    "tasks data backing file %s:  %s.");
+                    "tasks data backing file %s:  %s");
     registerMessage(MSGID_TASKSCHED_CANNOT_CREATE_BACKING_FILE,
                     "An error occurred while attempting to create a new " +
                     "tasks backing file %s for use with the task " +
-                    "scheduler:  %s.");
+                    "scheduler:  %s");
     registerMessage(MSGID_TASKSCHED_NO_CLASS_ATTRIBUTE,
                     "The provided task entry does not contain attribute %s " +
                     "which is needed to specify the fully-qualified name of " +
-                    "the class providing the task logic.");
+                    "the class providing the task logic");
     registerMessage(MSGID_TASKSCHED_MULTIPLE_CLASS_TYPES,
                     "The provided task entry contains multiple attributes " +
                     "with type %s, which is used to hold the task class " +
-                    "name, but only a single instance is allowed.");
+                    "name, but only a single instance is allowed");
     registerMessage(MSGID_TASKSCHED_NO_CLASS_VALUES,
                     "The provided task entry does not contain any values for " +
                     "the %s attribute, which is used to specify the " +
                     "fully-qualified name of the class providing the task " +
-                    "logic.");
+                    "logic");
     registerMessage(MSGID_TASKSCHED_MULTIPLE_CLASS_VALUES,
                     "The provided task entry contains multiple values for " +
                     "the %s attribute, which is used to specify the task " +
-                    "class name, but only a single value is allowed.");
+                    "class name, but only a single value is allowed");
     registerMessage(MSGID_TASKSCHED_CANNOT_LOAD_CLASS,
                     "An error occurred while attempting to load class %s " +
                     "specified in attribute %s of the provided task entry:  " +
@@ -4239,26 +4239,26 @@
     registerMessage(MSGID_TASKSCHED_CANNOT_INITIALIZE_INTERNAL,
                     "An error occurred while attempting to perform internal " +
                     "initialization on an instance of class %s with the " +
-                    "information contained in the provided entry:  %s.");
+                    "information contained in the provided entry:  %s");
     registerMessage(MSGID_TASKSCHED_CANNOT_RENAME_CURRENT_BACKING_FILE,
                     "An error occurred while attempting to rename the " +
                     "current tasks backing file from %s to %s:  %s.  The " +
                     "previous task configuration (which does not reflect the " +
-                    "latest update) may be lost.");
+                    "latest update) may be lost");
     registerMessage(MSGID_TASKSCHED_CANNOT_RENAME_NEW_BACKING_FILE,
                     "An error occurred while attempting to rename the " +
                     "new tasks backing file from %s to %s:  %s.  If the " +
                     "Directory Server is restarted, then the task scheduler " +
-                    "may not be able to .");
+                    "may not be able to ");
     registerMessage(MSGID_TASKSCHED_CANNOT_WRITE_BACKING_FILE,
                     "An error occurred while attempting to write the new " +
                     "tasks data backing file %s:  %s.  Configuration " +
-                    "information reflecting the latest update may be lost.");
+                    "information reflecting the latest update may be lost");
 
 
     registerMessage(MSGID_BACKUP_CONFIG_ENTRY_NULL,
                     "Unable to initialize the backup backend because the " +
-                    "provided configuration entry is null.");
+                    "provided configuration entry is null");
     registerMessage(MSGID_BACKUP_CANNOT_DECODE_BACKUP_ROOT_DN,
                     "Unable to initialize the backup backend because an " +
                     "error occurred while attempting to decode the base DN " +
@@ -4269,106 +4269,106 @@
                     "backend.  Backup directories not in this list may still " +
                     "be accessed by directly specifying the backup directory " +
                     "in the search base DN.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_BACKUP_CANNOT_DETERMINE_BACKUP_DIR_LIST,
                     "An error occurred while attempting to determine the " +
                     "backup directory list:  %s.  Initialization of the " +
-                    "backup backend cannot continue.");
+                    "backup backend cannot continue");
     registerMessage(MSGID_BACKUP_GET_ENTRY_NULL,
                     "Unable to retrieve an entry from the backup backend " +
-                    "because the requested entry was null.");
+                    "because the requested entry was null");
     registerMessage(MSGID_BACKUP_INVALID_BASE,
-                    "Requested entry %s does not exist in the backup backend.");
+                    "Requested entry %s does not exist in the backup backend");
     registerMessage(MSGID_BACKUP_DN_DOES_NOT_SPECIFY_DIRECTORY,
                     "Unable to retrieve entry %s from the backup backend " +
                     "because the requested DN is one level below the " +
-                    "base DN but does not specify a backup directory.");
+                    "base DN but does not specify a backup directory");
     registerMessage(MSGID_BACKUP_INVALID_BACKUP_DIRECTORY,
                     "Unable to retrieve entry %s from the backup backend " +
-                    "because the requested backup directory is invalid:  %s.");
+                    "because the requested backup directory is invalid:  %s");
     registerMessage(MSGID_BACKUP_ERROR_GETTING_BACKUP_DIRECTORY,
                     "An error occurred while attempting to examine the " +
-                    "requested backup directory:  %s.");
+                    "requested backup directory:  %s");
     registerMessage(MSGID_BACKUP_NO_BACKUP_ID_IN_DN,
                     "Unable to retrieve entry %s from the backup backend " +
                     "because the requested DN is two levels below the " +
-                    "base DN but does not specify a backup ID.");
+                    "base DN but does not specify a backup ID");
     registerMessage(MSGID_BACKUP_NO_BACKUP_PARENT_DN,
                     "Unable to retrieve entry %s from the backup backend " +
-                    "because it does not have a parent.");
+                    "because it does not have a parent");
     registerMessage(MSGID_BACKUP_NO_BACKUP_DIR_IN_DN,
                     "Unable to retrieve entry %s from the backup backend " +
                     "because the DN does not contain the backup directory " +
-                    "in which the requested backup should reside.");
+                    "in which the requested backup should reside");
     registerMessage(MSGID_BACKUP_NO_SUCH_BACKUP,
-                    "Backup %s does not exist in backup directory %s.");
+                    "Backup %s does not exist in backup directory %s");
     registerMessage(MSGID_BACKUP_ADD_NOT_SUPPORTED,
-                    "Add operations are not supported in the backup backend.");
+                    "Add operations are not supported in the backup backend");
     registerMessage(MSGID_BACKUP_DELETE_NOT_SUPPORTED,
                     "Delete operations are not supported in the backup " +
-                    "backend.");
+                    "backend");
     registerMessage(MSGID_BACKUP_MODIFY_NOT_SUPPORTED,
                     "Modify operations are not supported in the backup " +
-                    "backend.");
+                    "backend");
     registerMessage(MSGID_BACKUP_MODIFY_DN_NOT_SUPPORTED,
                     "Modify DN operations are not supported in the backup " +
-                    "backend.");
+                    "backend");
     registerMessage(MSGID_BACKUP_NO_SUCH_ENTRY,
                     "The requested entry %s does not exist in the backup " +
-                    "backend.");
+                    "backend");
     registerMessage(MSGID_BACKUP_EXPORT_NOT_SUPPORTED,
                     "LDIF export operations are not supported in the backup " +
-                    "backend.");
+                    "backend");
     registerMessage(MSGID_BACKUP_IMPORT_NOT_SUPPORTED,
                     "LDIF import operations are not supported in the backup " +
-                    "backend.");
+                    "backend");
     registerMessage(MSGID_BACKUP_BACKUP_AND_RESTORE_NOT_SUPPORTED,
                     "Backup and restore operations are not supported in " +
-                    "the backup backend.");
+                    "the backup backend");
 
 
     registerMessage(MSGID_MEMORYBACKEND_REQUIRE_EXACTLY_ONE_BASE,
                     "Exactly one base DN must be provided for use with the " +
-                    "memory-based backend.");
+                    "memory-based backend");
     registerMessage(MSGID_MEMORYBACKEND_ENTRY_ALREADY_EXISTS,
-                    "Entry %s already exists in the memory-based backend.");
+                    "Entry %s already exists in the memory-based backend");
     registerMessage(MSGID_MEMORYBACKEND_ENTRY_DOESNT_BELONG,
-                    "Entry %s does not belong in the memory-based backend.");
+                    "Entry %s does not belong in the memory-based backend");
     registerMessage(MSGID_MEMORYBACKEND_PARENT_DOESNT_EXIST,
                     "Unable to add entry %s because its parent entry %s does " +
-                    "not exist in the memory-based backend.");
+                    "not exist in the memory-based backend");
     registerMessage(MSGID_MEMORYBACKEND_ENTRY_DOESNT_EXIST,
-                    "Entry %s does not exist in the memory-based backend.");
+                    "Entry %s does not exist in the memory-based backend");
     registerMessage(MSGID_MEMORYBACKEND_CANNOT_DELETE_ENTRY_WITH_CHILDREN,
                     "Cannot delete entry %s because it has one or more " +
-                    "subordinate entries.");
+                    "subordinate entries");
     registerMessage(MSGID_MEMORYBACKEND_MODDN_NOT_SUPPORTED,
                     "Modify DN operations are not supported in the " +
-                    "memory-based backend.");
+                    "memory-based backend");
     registerMessage(MSGID_MEMORYBACKEND_CANNOT_CREATE_LDIF_WRITER,
-                    "Unable to create an LDIF writer:  %s.");
+                    "Unable to create an LDIF writer:  %s");
     registerMessage(MSGID_MEMORYBACKEND_CANNOT_WRITE_ENTRY_TO_LDIF,
-                    "Cannot write entry %s to LDIF:  %s.");
+                    "Cannot write entry %s to LDIF:  %s");
     registerMessage(MSGID_MEMORYBACKEND_CANNOT_CREATE_LDIF_READER,
-                    "Unable to create an LDIF reader:  %s.");
+                    "Unable to create an LDIF reader:  %s");
     registerMessage(MSGID_MEMORYBACKEND_ERROR_READING_LDIF,
                     "An unrecoverable error occurred while reading from " +
-                    "LDIF:  %s.");
+                    "LDIF:  %s");
     registerMessage(MSGID_MEMORYBACKEND_ERROR_DURING_IMPORT,
                     "An unexpected error occurred while processing the " +
-                    "import:  %s.");
+                    "import:  %s");
     registerMessage(MSGID_MEMORYBACKEND_BACKUP_RESTORE_NOT_SUPPORTED,
                     "The memory-based backend does not support backup or " +
-                    "restore operations.");
+                    "restore operations");
     registerMessage(MSGID_MEMORYBACKEND_CANNOT_RENAME_ENRY_WITH_CHILDREN,
                     "Cannot rename entry %s because it has one or more " +
-                    "subordinate entries.");
+                    "subordinate entries");
     registerMessage(MSGID_MEMORYBACKEND_CANNOT_RENAME_TO_ANOTHER_BACKEND,
                     "Cannot rename entry %s because the target entry is in a " +
-                    "different backend.");
+                    "different backend");
     registerMessage(MSGID_MEMORYBACKEND_RENAME_PARENT_DOESNT_EXIST,
                     "Cannot rename entry %s because the new parent entry %s " +
-                    "doesn't exist.");
+                    "doesn't exist");
   }
 }
 
diff --git a/opends/src/server/org/opends/server/messages/ConfigMessages.java b/opends/src/server/org/opends/server/messages/ConfigMessages.java
index fd9d540..a497236 100644
--- a/opends/src/server/org/opends/server/messages/ConfigMessages.java
+++ b/opends/src/server/org/opends/server/messages/ConfigMessages.java
@@ -6581,455 +6581,455 @@
     registerMessage(MSGID_CONFIG_ATTR_IS_REQUIRED,
                     "Configuration attribute %s is required to have at least " +
                     "one value but the resulted operation would have removed " +
-                    "all values.");
+                    "all values");
     registerMessage(MSGID_CONFIG_ATTR_REJECTED_VALUE,
                     "Provided value %s for configuration attribute %s was " +
-                    "rejected.  The reason provided was:  %s.");
+                    "rejected.  The reason provided was:  %s");
     registerMessage(MSGID_CONFIG_ATTR_SET_VALUES_IS_SINGLE_VALUED,
                     "Configuration attribute %s is single-valued, but " +
-                    "multiple values were provided.");
+                    "multiple values were provided");
     registerMessage(MSGID_CONFIG_ATTR_ADD_VALUES_IS_SINGLE_VALUED,
                     "Configuration attribute %s is single-valued, but adding " +
                     "the provided value(s) would have given it multiple " +
-                    "values.");
+                    "values");
     registerMessage(MSGID_CONFIG_ATTR_ADD_VALUES_ALREADY_EXISTS,
-                    "Configuration attribute %s already contains a value %s.");
+                    "Configuration attribute %s already contains a value %s");
     registerMessage(MSGID_CONFIG_ATTR_NO_SUCH_VALUE,
                     "Cannot remove value %s from configuration attribute %s " +
-                    "because the specified value does not exist.");
+                    "because the specified value does not exist");
     registerMessage(MSGID_CONFIG_ATTR_OPTIONS_NOT_ALLOWED,
                     "Invalid configuration attribute %s detected in entry " +
                     "%s:  the only attribute option allowed in the Directory " +
                     "Server configuration is \"" + OPTION_PENDING_VALUES +
-                    "\" to indicate the set of pending values.");
+                    "\" to indicate the set of pending values");
     registerMessage(MSGID_CONFIG_ATTR_MULTIPLE_PENDING_VALUE_SETS,
                     "Configuration attribute %s appears to contain multiple " +
-                    "pending value sets.");
+                    "pending value sets");
     registerMessage(MSGID_CONFIG_ATTR_MULTIPLE_ACTIVE_VALUE_SETS,
                     "Configuration attribute %s appears to contain multiple " +
-                    "active value sets.");
+                    "active value sets");
     registerMessage(MSGID_CONFIG_ATTR_NO_ACTIVE_VALUE_SET,
                     "Configuration attribute %s does not contain an active " +
-                    "value set.");
+                    "value set");
     registerMessage(MSGID_CONFIG_CANNOT_GET_CONFIG_ENTRY,
                     "An error occurred while attempting to retrieve " +
-                    "configuration entry %s:  %s.");
+                    "configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_SET_ATTRIBUTE,
                     "The value of configuration attribute %s has been set to " +
-                    "%s in configuration entry %s.");
+                    "%s in configuration entry %s");
     registerMessage(MSGID_CONFIG_CHANGE_NOT_SUCCESSFUL,
                     "The attempt to update configuration entry %s was not " +
                     "successful and one or more problems were encountered:  " +
-                    "%s.");
+                    "%s");
 
 
     registerMessage(MSGID_CONFIG_ATTR_INVALID_BOOLEAN_VALUE,
                     "Unable to set the value for Boolean configuration " +
                     "attribute %s because the provided value %s was not " +
-                    "either 'true' or 'false'.");
+                    "either 'true' or 'false'");
 
 
     registerMessage(MSGID_CONFIG_ATTR_NO_INT_VALUE,
                     "Unable to retrieve the value for configuration " +
                     "attribute %s as an integer because that attribute does " +
-                    "not have any values.");
+                    "not have any values");
     registerMessage(MSGID_CONFIG_ATTR_MULTIPLE_INT_VALUES,
                     "Unable to retrieve the value for configuration " +
                     "attribute %s as an integer because that attribute has " +
-                    "multiple values.");
+                    "multiple values");
     registerMessage(MSGID_CONFIG_ATTR_VALUE_OUT_OF_INT_RANGE,
                     "Unable to retrieve the value for configuration " +
                     "attribute %s as a Java int because the value is outside " +
-                    "the allowable range for an int.");
+                    "the allowable range for an int");
     registerMessage(MSGID_CONFIG_ATTR_INVALID_INT_VALUE,
                     "Unable to set the value for integer configuration " +
                     "attribute %s because the provided value %s cannot be " +
-                    "interpreted as an integer value:  %s.");
+                    "interpreted as an integer value:  %s");
     registerMessage(MSGID_CONFIG_ATTR_INT_BELOW_LOWER_BOUND,
                     "Unable to set the value for configuration attribute %s " +
                     "because the provided value %d is less than the lowest " +
-                    "allowed value of %d.");
+                    "allowed value of %d");
     registerMessage(MSGID_CONFIG_ATTR_INT_ABOVE_UPPER_BOUND,
                     "Unable to set the value for configuration attribute %s " +
                     "because the provided value %d is greater than the " +
-                    "largest allowed value of %d.");
+                    "largest allowed value of %d");
     registerMessage(MSGID_CONFIG_ATTR_INT_COULD_NOT_PARSE,
                     "Unable to parse value %s for configuration attribute %s " +
-                    "as an integer value:  %s.");
+                    "as an integer value:  %s");
     registerMessage(MSGID_CONFIG_ATTR_INT_INVALID_TYPE,
                     "Unable to parse value %s for configuration attribute %s " +
                     "as an integer value because the element was of an " +
-                    "invalid type (%s).");
+                    "invalid type (%s)");
     registerMessage(MSGID_CONFIG_ATTR_INT_INVALID_ARRAY_TYPE,
                     "Unable to parse value for configuration attribute %s " +
                     "as a set of integer values because the array contained " +
-                    "elements of an invalid type (%s).");
+                    "elements of an invalid type (%s)");
 
 
     registerMessage(MSGID_CONFIG_ATTR_NO_STRING_VALUE,
                     "Unable to retrieve the value for configuration " +
                     "attribute %s as a string because that attribute does " +
-                    "not have any values.");
+                    "not have any values");
     registerMessage(MSGID_CONFIG_ATTR_MULTIPLE_STRING_VALUES,
                     "Unable to retrieve the value for configuration " +
                     "attribute %s as a string because that attribute has " +
-                    "multiple values.");
+                    "multiple values");
     registerMessage(MSGID_CONFIG_ATTR_EMPTY_STRING_VALUE,
                     "An empty value string was provided for configuration " +
-                    "attribute %s.");
+                    "attribute %s");
     registerMessage(MSGID_CONFIG_ATTR_INVALID_STRING_VALUE,
                     "Unable to parse value %s for configuration attribute %s " +
-                    "as a string value:  %s.");
+                    "as a string value:  %s");
     registerMessage(MSGID_CONFIG_ATTR_STRING_INVALID_TYPE,
                     "Unable to parse value %s for configuration attribute %s " +
                     "as a string value because the element was of an invalid " +
-                    "type (%s).");
+                    "type (%s)");
     registerMessage(MSGID_CONFIG_ATTR_STRING_INVALID_ARRAY_TYPE,
                     "Unable to parse value for configuration attribute %s " +
                     "as a set of string values because the array contained " +
-                    "elements of an invalid type (%s).");
+                    "elements of an invalid type (%s)");
 
 
     registerMessage(MSGID_CONFIG_ATTR_VALUE_NOT_ALLOWED,
                     "The value %s is not included in the list of acceptable " +
-                    "values for configuration attribute %s.");
+                    "values for configuration attribute %s");
     registerMessage(MSGID_CONFIG_ATTR_READ_ONLY,
                     "Configuration attribute %s is read-only and its values " +
-                    "may not be altered.");
+                    "may not be altered");
 
 
     registerMessage(MSGID_CONFIG_ATTR_INVALID_UNIT,
-                    "'%s' is not a valid unit for configuration attribute %s.");
+                    "'%s' is not a valid unit for configuration attribute %s");
     registerMessage(MSGID_CONFIG_ATTR_NO_UNIT_DELIMITER,
                     "Cannot decode %s as an integer value and a unit for " +
                     "configuration attribute %s because no value/unit " +
-                    "delimiter could be found.");
+                    "delimiter could be found");
     registerMessage(MSGID_CONFIG_ATTR_COULD_NOT_PARSE_INT_COMPONENT,
                     "Could not decode the integer portion of value %s for " +
-                    "configuration attribute %s:  %s.");
+                    "configuration attribute %s:  %s");
     registerMessage(MSGID_CONFIG_ATTR_INVALID_VALUE_WITH_UNIT,
                     "The provided value %s for integer with unit attribute " +
-                    "%s is not allowed:  %s.");
+                    "%s is not allowed:  %s");
     registerMessage(MSGID_CONFIG_ATTR_INT_WITH_UNIT_INVALID_TYPE,
                     "Unable to parse value %s for configuration attribute %s " +
                     "as an integer with unit value because the element was " +
-                    "of an invalid type (%s).");
+                    "of an invalid type (%s)");
 
 
     registerMessage(MSGID_CONFIG_ENTRY_CONFLICTING_CHILD,
                     "Unable to add configuration entry %s as a child of " +
                     "configuration entry %s because a child entry was " +
-                    "already found with that DN.");
+                    "already found with that DN");
     registerMessage(MSGID_CONFIG_ENTRY_NO_SUCH_CHILD,
                     "Unable to remove entry %s as a child of configuration " +
                     "entry %s because that entry did not have a child with " +
-                    "the specified DN.");
+                    "the specified DN");
     registerMessage(MSGID_CONFIG_ENTRY_CANNOT_REMOVE_NONLEAF,
                     "Unable to remove entry %s as a child of configuration " +
                     "entry %s because that entry had children of its own and " +
-                    "non-leaf entries may not be removed.");
+                    "non-leaf entries may not be removed");
     registerMessage(MSGID_CONFIG_ENTRY_CANNOT_REMOVE_CHILD,
                     "An unexpected error occurred while attempting to remove " +
-                    "entry %s as a child of configuration entry %s:  %s.");
+                    "entry %s as a child of configuration entry %s:  %s");
 
 
     registerMessage(MSGID_CONFIG_FILE_DOES_NOT_EXIST,
                     "The specified configuration file %s does not exist or " +
-                    "is not readable.");
+                    "is not readable");
     registerMessage(MSGID_CONFIG_FILE_CANNOT_VERIFY_EXISTENCE,
                     "An unexpected error occurred while attempting to " +
-                    "determine whether configuration file %s exists:  %s.");
+                    "determine whether configuration file %s exists:  %s");
     registerMessage(MSGID_CONFIG_UNABLE_TO_APPLY_STARTUP_CHANGES,
                     "An error occurred while attempting to apply the changes " +
                     "contained in file %s to the server configuration at " +
-                    "startup:  %s.");
+                    "startup:  %s");
     registerMessage(MSGID_CONFIG_FILE_CANNOT_OPEN_FOR_READ,
                     "An error occurred while attempting to open the " +
-                    "configuration file %s for reading:  %s.");
+                    "configuration file %s for reading:  %s");
     registerMessage(MSGID_CONFIG_FILE_READ_ERROR,
                     "An error occurred while attempting to read the contents " +
-                    "of configuration file %s:  %s.");
+                    "of configuration file %s:  %s");
     registerMessage(MSGID_CONFIG_FILE_INVALID_LDIF_ENTRY,
                     "An error occurred at or near line %d while trying to " +
-                    "parse the configuration from LDIF file %s:  %s.");
+                    "parse the configuration from LDIF file %s:  %s");
     registerMessage(MSGID_CONFIG_FILE_EMPTY,
                     "The specified configuration file %s does not appear to " +
-                    "contain any configuration entries.");
+                    "contain any configuration entries");
     registerMessage(MSGID_CONFIG_FILE_INVALID_BASE_DN,
                     "The first entry read from LDIF configuration file %s " +
                     "had a DN of \"%s\" rather than the expected \"%s\" " +
                     "which should be used as the Directory Server " +
-                    "configuration root.");
+                    "configuration root");
     registerMessage(MSGID_CONFIG_FILE_GENERIC_ERROR,
                     "An unexpected error occurred while attempting to " +
-                    "process the Directory Server configuration file %s:  %s.");
+                    "process the Directory Server configuration file %s:  %s");
     registerMessage(MSGID_CONFIG_FILE_DUPLICATE_ENTRY,
                     "Configuration entry %s starting at or near line %s in " +
                     "the LDIF configuration file %s has the same DN as " +
-                    "another entry already read from that file.");
+                    "another entry already read from that file");
     registerMessage(MSGID_CONFIG_FILE_NO_PARENT,
                     "Configuration entry %s starting at or near line %d in " +
                     "the configuration LDIF file %s does not appear to have " +
-                    "a parent entry (expected parent DN was %s).");
+                    "a parent entry (expected parent DN was %s)");
     registerMessage(MSGID_CONFIG_FILE_UNKNOWN_PARENT,
                     "The Directory Server was unable to determine the parent " +
                     "DN for configuration entry %s starting at or near line " +
-                    "%d in the configuration LDIF file %s.");
+                    "%d in the configuration LDIF file %s");
     registerMessage(MSGID_CONFIG_CANNOT_DETERMINE_SERVER_ROOT,
                     "Unable to determine the Directory Server instance root " +
                     "from either an environment variable or based on the " +
                     "location of the configuration file.  Please set an " +
                     "environment variable named %s with a value containing " +
-                    "the absolute path to the server installation root.");
+                    "the absolute path to the server installation root");
     registerMessage(MSGID_CONFIG_LDIF_WRITE_ERROR,
                     "An unexpected error occurred while trying to export " +
-                    "the Directory Server configuration to LDIF:  %s.");
+                    "the Directory Server configuration to LDIF:  %s");
     registerMessage(MSGID_CONFIG_FILE_WRITE_ERROR,
                     "An unexpected error occurred while trying to write " +
-                    "configuration entry %s to LDIF:  %s.");
+                    "configuration entry %s to LDIF:  %s");
     registerMessage(MSGID_CONFIG_FILE_CLOSE_ERROR,
                     "An unexpected error occurred while trying to close " +
-                    "the LDIF writer:  %s.");
+                    "the LDIF writer:  %s");
     registerMessage(MSGID_CONFIG_FILE_UNWILLING_TO_IMPORT,
                     "The Directory Server configuration may not be altered " +
-                    "by importing a new configuration from LDIF.");
+                    "by importing a new configuration from LDIF");
     registerMessage(MSGID_CONFIG_CANNOT_REGISTER_AS_PRIVATE_SUFFIX,
                     "An unexpected error occurred while trying to register " +
                     "the configuration handler base DN \"%s\" as a private " +
-                    "suffix with the Directory Server:  %s.");
+                    "suffix with the Directory Server:  %s");
     registerMessage(MSGID_CONFIG_ERROR_APPLYING_STARTUP_CHANGE,
-                    "Unable to apply a change at server startup:  %s.");
+                    "Unable to apply a change at server startup:  %s");
     registerMessage(MSGID_CONFIG_UNABLE_TO_APPLY_CHANGES_FILE,
                     "One or more errors occurred while applying changes on " +
-                    "server startup.");
+                    "server startup");
     registerMessage(MSGID_CONFIG_FILE_ADD_ALREADY_EXISTS,
                     "Entry %s cannot be added to the Directory Server " +
                     "configuration because another configuration entry " +
-                    "already exists with that DN.");
+                    "already exists with that DN");
     registerMessage(MSGID_CONFIG_FILE_ADD_NO_PARENT_DN,
                     "Entry %s cannot be added to the Directory Server " +
-                    "configuration because that DN does not have a parent.");
+                    "configuration because that DN does not have a parent");
     registerMessage(MSGID_CONFIG_FILE_ADD_NO_PARENT,
                     "Entry %s cannot be added to the Directory Server " +
                     "configuration because its parent entry %s does not " +
-                    "exist.");
+                    "exist");
     registerMessage(MSGID_CONFIG_FILE_ADD_REJECTED_BY_LISTENER,
                     "The Directory Server is unwilling to add configuration " +
                     "entry %s because one of the add listeners registered " +
                     "with the parent entry %s rejected this change with " +
-                    "the message:  %s.");
+                    "the message:  %s");
     registerMessage(MSGID_CONFIG_FILE_ADD_FAILED,
                     "An unexpected error occurred while attempting to add " +
-                    "configuration entry %s as a child of entry %s:  %s.");
+                    "configuration entry %s as a child of entry %s:  %s");
     registerMessage(MSGID_CONFIG_FILE_DELETE_NO_SUCH_ENTRY,
                     "Entry %s cannot be removed from the Directory Server " +
                     "configuration because the specified entry does not " +
-                    "exist.");
+                    "exist");
     registerMessage(MSGID_CONFIG_FILE_DELETE_HAS_CHILDREN,
                     "Entry %s cannot be removed from the Directory Server " +
                     "configuration because the specified entry has one or " +
-                    "more subordinate entries.");
+                    "more subordinate entries");
     registerMessage(MSGID_CONFIG_FILE_DELETE_NO_PARENT,
                     "Entry %s cannot be removed from the Directory Server " +
                     "configuration because the entry does not have a parent " +
                     "and removing the configuration root entry is not " +
-                    "allowed.");
+                    "allowed");
     registerMessage(MSGID_CONFIG_FILE_DELETE_REJECTED,
                     "Entry %s cannot be removed from the Directory Server " +
                     "configuration because one of the delete listeners " +
                     "registered with the parent entry %s rejected this " +
-                    "change with the message:  %s.");
+                    "change with the message:  %s");
     registerMessage(MSGID_CONFIG_FILE_DELETE_FAILED,
                     "An unexpected error occurred while attempting to remove " +
-                    "configuration entry %s as a child of entry %s:  %s.");
+                    "configuration entry %s as a child of entry %s:  %s");
     registerMessage(MSGID_CONFIG_FILE_MODIFY_NO_SUCH_ENTRY,
                     "Entry %s cannot be modified because the specified entry " +
-                    "does not exist.");
+                    "does not exist");
     registerMessage(MSGID_CONFIG_FILE_MODIFY_REJECTED_BY_CHANGE_LISTENER,
                     "Entry %s cannot be modified because one of the " +
                     "configuration change listeners registered for that " +
-                    "entry rejected the change:  %s.");
+                    "entry rejected the change:  %s");
     registerMessage(MSGID_CONFIG_FILE_MODIFY_REJECTED_BY_COMPONENT,
                     "Entry %s cannot be modified because one of the " +
                     "configurable components registered for that entry " +
-                    "rejected the change:  %s.");
+                    "rejected the change:  %s");
     registerMessage(MSGID_CONFIG_FILE_SEARCH_NO_SUCH_BASE,
                     "The search operation cannot be processed because base " +
-                    "entry %s does not exist.");
+                    "entry %s does not exist");
     registerMessage(MSGID_CONFIG_FILE_SEARCH_INVALID_SCOPE,
                     "The search operation cannot be processed because the " +
-                    "specified search scope %s is invalid.");
+                    "specified search scope %s is invalid");
     registerMessage(MSGID_CONFIG_FILE_WRITE_CANNOT_CREATE_TEMP_ARCHIVE,
                     "An error occurred while attempting to create a " +
                     "temporary file %s to hold the archived versions of " +
                     "previous Directory Server configurations as a result of " +
-                    "a configuration change:  %s.");
+                    "a configuration change:  %s");
     registerMessage(MSGID_CONFIG_FILE_WRITE_CANNOT_COPY_EXISTING_ARCHIVE,
                     "An error occurred while attempting to copy the " +
                     "archived configurations from %s to temporary file %s:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_CONFIG_FILE_WRITE_CANNOT_COPY_CURRENT_CONFIG,
                     "An error occurred while attempting to update the " +
                     "archived configurations in file %s to include the " +
-                    "running configuration from file %s:  %s.");
+                    "running configuration from file %s:  %s");
     registerMessage(MSGID_CONFIG_FILE_WRITE_CANNOT_RENAME_TEMP_ARCHIVE,
                     "The attempt to rename the archived configuration data " +
                     "from %s to %s failed, but the underlying reason for the " +
-                    "failure could not be determined.");
+                    "failure could not be determined");
     registerMessage(MSGID_CONFIG_FILE_WRITE_CANNOT_REPLACE_ARCHIVE,
                     "The updated archive containing previous Directory " +
                     "Server configurations could not be renamed from %s to " +
-                    "%s:  %s.");
+                    "%s:  %s");
     registerMessage(MSGID_CONFIG_FILE_CANNOT_CREATE_ARCHIVE_DIR_NO_REASON,
                     "An error occurred while trying to create the " +
-                    "configuration archive directory %s.");
+                    "configuration archive directory %s");
     registerMessage(MSGID_CONFIG_FILE_CANNOT_CREATE_ARCHIVE_DIR,
                     "An error occurred while trying to create the " +
-                    "configuration archive directory %s:  %s.");
+                    "configuration archive directory %s:  %s");
     registerMessage(MSGID_CONFIG_FILE_CANNOT_WRITE_CONFIG_ARCHIVE,
                     "An error occurred while trying to write the current " +
-                    "configuration to the configuration archive:  %s.");
+                    "configuration to the configuration archive:  %s");
     registerMessage(MSGID_CONFIG_FILE_WRITE_CANNOT_EXPORT_NEW_CONFIG,
                     "An error occurred while attempting to export the new " +
-                    "Directory Server configuration to file %s:  %s.");
+                    "Directory Server configuration to file %s:  %s");
     registerMessage(MSGID_CONFIG_FILE_WRITE_CANNOT_RENAME_NEW_CONFIG,
                     "An error occurred while attempting to rename the new " +
-                    "Directory Server configuration from file %s to %s:  %s.");
+                    "Directory Server configuration from file %s to %s:  %s");
     registerMessage(MSGID_CONFIG_FILE_MODDN_NOT_ALLOWED,
                     "Modify DN operations are not allowed in the Directory " +
-                    "Server configuration.");
+                    "Server configuration");
     registerMessage(MSGID_CONFIG_FILE_HEADER,
                     "This file contains the primary Directory Server " +
                     "configuration.  It must not be directly edited while " +
                     "the server is online.  The server configuration should " +
                     "only be managed using the administration utilities " +
-                    "provided with the Directory Server.");
+                    "provided with the Directory Server");
     registerMessage(MSGID_CONFIG_FILE_ADD_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to perform add " +
-                    "operations in the Directory Server configuration.");
+                    "operations in the Directory Server configuration");
     registerMessage(MSGID_CONFIG_FILE_DELETE_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to perform delete " +
-                    "operations in the Directory Server configuration.");
+                    "operations in the Directory Server configuration");
     registerMessage(MSGID_CONFIG_FILE_MODIFY_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to perform modify " +
-                    "operations in the Directory Server configuration.");
+                    "operations in the Directory Server configuration");
     registerMessage(MSGID_CONFIG_FILE_MODIFY_PRIVS_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to change the set " +
-                    "of default root privileges.");
+                    "of default root privileges");
     registerMessage(MSGID_CONFIG_FILE_MODDN_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to perform modify " +
-                    "DN operations in the Directory Server configuration.");
+                    "DN operations in the Directory Server configuration");
     registerMessage(MSGID_CONFIG_FILE_SEARCH_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to perform search " +
-                    "operations in the Directory Server configuration.");
+                    "operations in the Directory Server configuration");
 
 
     registerMessage(MSGID_CONFIG_LOGGER_CANNOT_GET_BASE,
                     "An error occurred while attempting to retrieve the " +
                     "base logger entry " + DN_LOGGER_BASE + " from the " +
-                    "Directory Server configuration:  %s.");
+                    "Directory Server configuration:  %s");
     registerMessage(MSGID_CONFIG_LOGGER_BASE_DOES_NOT_EXIST,
                     "The logger configuration base " + DN_LOGGER_BASE +
                     " does not exist in the Directory Server configuration.  " +
                     "Logging facilities will not be available until this " +
-                    "entry is created and the Directory Server is restarted.");
+                    "entry is created and the Directory Server is restarted");
     registerMessage(MSGID_CONFIG_LOGGER_NO_ACTIVE_ACCESS_LOGGERS,
                     "There are no active access loggers defined in the " +
                     "Directory Server configuration.  No access logging will " +
-                    "be performed.");
+                    "be performed");
     registerMessage(MSGID_CONFIG_LOGGER_NO_ACTIVE_ERROR_LOGGERS,
                     "There are no active error loggers defined in the " +
                     "Directory Server configuration.  No error logging will " +
-                    "be performed.");
+                    "be performed");
     registerMessage(MSGID_CONFIG_LOGGER_NO_ACTIVE_DEBUG_LOGGERS,
                     "There are no active debug loggers defined in the " +
                     "Directory Server configuration.  No debug logging will " +
-                    "be performed.");
+                    "be performed");
     registerMessage(MSGID_CONFIG_LOGGER_ENTRY_UNACCEPTABLE,
                     "Configuration entry %s does not contain a valid logger " +
-                    "configuration:  %s.  It will be ignored.");
+                    "configuration:  %s.  It will be ignored");
     registerMessage(MSGID_CONFIG_LOGGER_CANNOT_CREATE_LOGGER,
                     "An error occurred while attempting to create a " +
                     "Directory Server logger from the information in " +
-                    "configuration entry %s:  %s.");
+                    "configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_LOGGER_INVALID_OBJECTCLASS,
                     "Configuration entry %s does not contain a valid " +
                     "objectclass for a Directory Server access, error, or " +
-                    "debug logger definition.");
+                    "debug logger definition");
     registerMessage(MSGID_CONFIG_LOGGER_NO_CLASS_NAME,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " + ATTR_LOGGER_CLASS +
                     " which specifies the fully-qualified class name for " +
-                    "the associated logger.");
+                    "the associated logger");
     registerMessage(MSGID_CONFIG_LOGGER_INVALID_CLASS_NAME,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_LOGGER_CLASS + ":  %s.");
+                    "attribute " + ATTR_LOGGER_CLASS + ":  %s");
     registerMessage(MSGID_CONFIG_LOGGER_INVALID_ACCESS_LOGGER_CLASS,
                     "Class %s specified in attribute " + ATTR_LOGGER_CLASS +
                     " of configuration entry %s cannot be instantiated as " +
-                    "a Directory Server access logger:  %s.");
+                    "a Directory Server access logger:  %s");
     registerMessage(MSGID_CONFIG_LOGGER_INVALID_ERROR_LOGGER_CLASS,
                     "Class %s specified in attribute " + ATTR_LOGGER_CLASS +
                     " of configuration entry %s cannot be instantiated as " +
-                    "a Directory Server error logger:  %s.");
+                    "a Directory Server error logger:  %s");
     registerMessage(MSGID_CONFIG_LOGGER_INVALID_DEBUG_LOGGER_CLASS,
                     "Class %s specified in attribute " + ATTR_LOGGER_CLASS +
                     " of configuration entry %s cannot be instantiated as " +
-                    "a Directory Server debug logger:  %s.");
+                    "a Directory Server debug logger:  %s");
     registerMessage(MSGID_CONFIG_LOGGER_NO_ENABLED_ATTR,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " + ATTR_LOGGER_ENABLED +
                     " which indicates whether the logger should be enabled " +
-                    "for use in the Directory Server.");
+                    "for use in the Directory Server");
     registerMessage(MSGID_CONFIG_LOGGER_INVALID_ENABLED_VALUE,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_LOGGER_ENABLED + ":  %s.");
+                    "attribute " + ATTR_LOGGER_ENABLED + ":  %s");
     registerMessage(MSGID_CONFIG_LOGGER_DESCRIPTION_CLASS_NAME,
                     "The fully-qualified name of the Java class that defines " +
                     "the Directory Server logger.  If this is altered while " +
                     "the associated logger is enabled, then that logger must " +
                     "be disabled and re-enabled for the change to take " +
-                    "effect.");
+                    "effect");
     registerMessage(MSGID_CONFIG_LOGGER_DESCRIPTION_ENABLED,
                     "Indicates whether this Directory Server logger should " +
                     "be enabled.  Changes to this attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_CONFIG_LOGGER_NO_FILE_NAME,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " + ATTR_LOGGER_FILE +
                     " which specifies the log file name for " +
-                    "the associated logger.");
+                    "the associated logger");
     registerMessage(MSGID_CONFIG_LOGGER_CLASS_ACTION_REQUIRED,
                     "The requested change in the logger class name from %s " +
                     "to %s in configuration entry %s cannot be dynamically " +
                     "applied.  This change will not take effect until the " +
                     "logger is disabled and re-enabled or the Directory " +
-                    "Server is restarted.");
+                    "Server is restarted");
     registerMessage(MSGID_CONFIG_LOGGER_EXISTS,
                     "Unable to add a new logger entry with DN %s because " +
-                    "there is already a logger registered with that DN.");
+                    "there is already a logger registered with that DN");
     registerMessage(MSGID_CONFIG_LOGGER_ACCESS_INITIALIZATION_FAILED,
                     "An error occurred while trying to initialize an " +
                     "instance of class %s as an access logger as defined in " +
-                    "configuration entry %s:  %s.");
+                    "configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_LOGGER_ERROR_INITIALIZATION_FAILED,
                     "An error occurred while trying to initialize an " +
                     "instance of class %s as an error logger as defined in " +
-                    "configuration entry %s:  %s.");
+                    "configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_LOGGER_DEBUG_INITIALIZATION_FAILED,
                     "An error occurred while trying to initialize an " +
                     "instance of class %s as a debug logger as defined in " +
-                    "configuration entry %s:  %s.");
+                    "configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_LOGGER_UNACCEPTABLE_CONFIG,
                     "The configuration for the logger defined in " +
                     "configuration entry %s was not acceptable according to " +
                     "its internal validation.  However, no specific " +
                     "information is available regarding the problem(s) with " +
-                    "the entry.");
+                    "the entry");
 
 
     registerMessage(MSGID_CONFIG_UNKNOWN_UNACCEPTABLE_REASON,
-                    "Unknown unacceptable reason.");
+                    "Unknown unacceptable reason");
 
 
     registerMessage(MSGID_CONFIG_CORE_DESCRIPTION_ADD_MISSING_RDN_ATTRS,
@@ -7039,12 +7039,12 @@
                     "not contain the RDN attribute values in their attribute " +
                     "lists will be rejected because they are in violation " +
                     "of the LDAP specification.  Changes to this " +
-                    "configuration attribute will take effect immediately.");
+                    "configuration attribute will take effect immediately");
     registerMessage(MSGID_CONFIG_CORE_INVALID_ADD_MISSING_RDN_ATTRS,
                     "Configuration entry %s has an invalid value for " +
                     "configuration attribute " +
                     ATTR_ADD_MISSING_RDN_ATTRS + " (it should be a Boolean " +
-                    "value of true or false):  %s.");
+                    "value of true or false):  %s");
     registerMessage(MSGID_CONFIG_CORE_DESCRIPTION_ALLOW_ATTR_EXCEPTIONS,
                     "Indicates whether to allow some flexibility in the " +
                     "characters that may be used in attribute names.  By " +
@@ -7054,24 +7054,24 @@
                     "exceptions are enabled, then the underscore character " +
                     "will also be allowed and the attribute name may also " +
                     "start with a digit.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_CONFIG_CORE_INVALID_ALLOW_EXCEPTIONS,
                     "Configuration entry %s has an invalid value for " +
                     "configuration attribute " +
                     ATTR_ALLOW_ATTRIBUTE_NAME_EXCEPTIONS + " (it should be a " +
-                    "Boolean value of true or false):  %s.");
+                    "Boolean value of true or false):  %s");
     registerMessage(MSGID_CONFIG_CORE_DESCRIPTION_SERVER_ERROR_RESULT_CODE,
                     "Specifies the result code that should be used for " +
                     "responses in which the operation fails because of an " +
                     "internal server error.  The value should be the " +
                     "integer equivalent of the corresponding LDAP result " +
                     "code.  Changes to this configuration attribute will " +
-                    "take effect immediately.");
+                    "take effect immediately");
     registerMessage(MSGID_CONFIG_CORE_INVALID_SERVER_ERROR_RESULT_CODE,
                     "Configuration entry %s has an invalid value for " +
                     "configuration attribute " +
                     ATTR_SERVER_ERROR_RESULT_CODE + " (it should be an " +
-                    "integer value greater than or equal to 1):  %s.");
+                    "integer value greater than or equal to 1):  %s");
     registerMessage(MSGID_CONFIG_CORE_DESCRIPTION_INVALID_SYNTAX_BEHAVIOR,
                     "Specifies the behavior that the Directory Server should " +
                     "exhibit if it discovers an attribute whose value does " +
@@ -7081,22 +7081,22 @@
                     "invalid value but log a warning message, or \"accept\" " +
                     "to accept the invalid value with no warning.  Changes " +
                     "to this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_CONFIG_CORE_INVALID_ENFORCE_STRICT_SYNTAX,
                     "Configuration entry %s has an invalid value for " +
                     "configuration attribute " + ATTR_INVALID_SYNTAX_BEHAVIOR +
                     " (it should be one of \"accept\", \"reject\", or " +
-                    "\"warn\" ):  %s.");
+                    "\"warn\" ):  %s");
     registerMessage(MSGID_CONFIG_CORE_DESCRIPTION_MAX_ALLOWED_CONNECTIONS,
                     "The maximum number of client connections that may be " +
                     "established to the Directory Server at any given time.  " +
                     "a value that is less than or equal to zero indicates " +
                     "that there should be no limit.  Changes to this " +
-                    "configuration attribute will take effect immediately.");
+                    "configuration attribute will take effect immediately");
     registerMessage(MSGID_CONFIG_CORE_INVALID_MAX_ALLOWED_CONNECTIONS,
                     "Configuration entry %s has an invalid value for " +
                     "configuration attribute " + ATTR_MAX_ALLOWED_CONNS +
-                    " (it should be an integer value).");
+                    " (it should be an integer value)");
     registerMessage(MSGID_CONFIG_CORE_DESCRIPTION_STRUCTURAL_CLASS_BEHAVIOR,
                     "Specifies the behavior that the Directory Server should " +
                     "exhibit if it discovers an entry that does not have " +
@@ -7105,13 +7105,13 @@
                     "the entry but log a warning message, or \"accept\" to " +
                     "accept the invalid entry with no warning.  Changes to " +
                     "this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_CONFIG_CORE_INVALID_STRUCTURAL_CLASS_BEHAVIOR,
                     "Configuration entry %s has an invalid value for " +
                     "configuration attribute " +
                     ATTR_SINGLE_STRUCTURAL_CLASS_BEHAVIOR +
                     " (it should be one of \"accept\", \"reject\", or " +
-                    "\"warn\" ):  %s.");
+                    "\"warn\" ):  %s");
     registerMessage(MSGID_CONFIG_CORE_DESCRIPTION_CHECK_SCHEMA,
                     "Indicates whether the Directory Server should perform " +
                     "schema checking for update operations to ensure that " +
@@ -7121,11 +7121,11 @@
                     "Disabling schema checking is generally not recommended " +
                     "because it may allow invalid entries to be included in " +
                     "the server.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_CONFIG_CORE_INVALID_CHECK_SCHEMA,
                     "Configuration entry %s has an invalid value for " +
                     "configuration attribute " + ATTR_CHECK_SCHEMA +
-                    " (it should be a Boolean value of true or false):  %s.");
+                    " (it should be a Boolean value of true or false):  %s");
     registerMessage(MSGID_CONFIG_CORE_DESCRIPTION_NOTIFY_ABANDONED_OPERATIONS,
                     "Indicates whether the Directory Server should send a " +
                     "response to operations that have been abandoned to " +
@@ -7135,26 +7135,26 @@
                     "not behave properly if they are waiting on a response " +
                     "for an operation when there will not be one because it " +
                     "has been abandoned.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_CONFIG_CORE_DESCRIPTION_PROXY_MAPPER_DN,
                     "Specifies the DN of the configuration entry for the " +
                     "identity mapper that the Directory Server should use in " +
                     "conjunction with the proxied authorization V2 control.  " +
                     "Changes to this configuration attribute will take " +
-                    "effect immediately.");
+                    "effect immediately");
     registerMessage(MSGID_CONFIG_CORE_INVALID_NOTIFY_ABANDONED_OPERATIONS,
                     "Configuration entry %s has an invalid value for " +
                     "configuration attribute " + ATTR_NOTIFY_ABANDONED_OPS +
-                    " (it should be a Boolean value of true or false):  %s.");
+                    " (it should be a Boolean value of true or false):  %s");
     registerMessage(MSGID_CONFIG_CORE_INVALID_PROXY_MAPPER_DN,
                     "Configuration entry %s has an invalid value for " +
                     "configuration attribute " + ATTR_PROXY_MAPPER_DN +
                     " (it should be the DN of a valid identity mapper " +
-                    "configuration entry):  %s.");
+                    "configuration entry):  %s");
     registerMessage(MSGID_CONFIG_CORE_NO_PROXY_MAPPER_FOR_DN,
                     "The proxied authorization identity mapper DN %s " +
                     "specified in configuration entry %s does not refer to a " +
-                    "valid identity mapper configuration entry.");
+                    "valid identity mapper configuration entry");
     registerMessage(MSGID_CONFIG_CORE_DESCRIPTION_SIZE_LIMIT,
                     "Specifies the default maximum number of entries that " +
                     "should be returned to a client when processing a search " +
@@ -7162,36 +7162,36 @@
                     "by including the " + OP_ATTR_USER_SIZE_LIMIT +
                     " operational attribute in the user's entry.  Changes to " +
                     "this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_CONFIG_CORE_INVALID_SIZE_LIMIT,
                     "Configuration entry %s has an invalid value for " +
                     "configuration attribute " + ATTR_SIZE_LIMIT +
                     " (It should be a positive integer value specifying " +
                     "the size limit to use, or a value of 0 or -1 to " +
-                    "indicate that no limit should be enforced):  %s.");
+                    "indicate that no limit should be enforced):  %s");
     registerMessage(MSGID_CONFIG_CORE_DESCRIPTION_TIME_LIMIT,
                     "Specifies the default maximum length of time that " +
                     "should be allowed when processing a search operation.  " +
                     "This may be overridden on a per-user basis by including " +
                     "the " + OP_ATTR_USER_TIME_LIMIT + " operational " +
                     "attribute in the user's entry.  Changes to this " +
-                    "configuration attribute will take effect immediately.");
+                    "configuration attribute will take effect immediately");
     registerMessage(MSGID_CONFIG_CORE_INVALID_TIME_LIMIT,
                     "Configuration entry %s has an invalid value for " +
                     "configuration attribute " + ATTR_TIME_LIMIT +
                     " (it should be an integer value followed by a space " +
                     "and a time unit of seconds, minutes, hours, days, or " +
-                    "weeks):  %s.");
+                    "weeks):  %s");
     registerMessage(MSGID_CONFIG_CORE_DESCRIPTION_WRITABILITY_MODE,
                     "Specifies the writability mode for the Directory " +
                     "Server.  The value may be one of \"enabled\", " +
                     "\"disabled\", or \"internal-only\".  Changes to this " +
-                    "configuration attribute will take effect immediately.");
+                    "configuration attribute will take effect immediately");
     registerMessage(MSGID_CONFIG_CORE_INVALID_WRITABILITY_MODE,
                     "Configuration entry %s has an invalid value for " +
                     "configuration attribute " + ATTR_WRITABILITY_MODE +
                     " (the value should be one of \"enabled\", \"disabled\", " +
-                    "or \"internal-only\"):  %s.");
+                    "or \"internal-only\"):  %s");
     registerMessage(MSGID_CONFIG_CORE_DESCRIPTION_BIND_WITH_DN_REQUIRES_PW,
                     "Indicates whether simple binds that contain a DN will " +
                     "also be required to contain a password.  If this is " +
@@ -7202,7 +7202,7 @@
                     "simple bind request that contains a DN but no password " +
                     "will be rejected rather than defaulting to anonymous " +
                     "authentication.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_CONFIG_CORE_DESCRIPTION_DEFAULT_PWPOLICY_DN,
                     "Specifies the DN of the configuration entry that " +
                     "defines the default password policy for the Directory " +
@@ -7210,59 +7210,59 @@
                     "custom password policy is not defined.  This entry must " +
                     "exist and must specify a valid password policy " +
                     "configuration.  Changes to this configuration attribute " +
-                    "will take effect immediately.");
+                    "will take effect immediately");
     registerMessage(MSGID_CONFIG_CORE_INVALID_BIND_WITH_DN_REQUIRES_PW,
                     "Configuration entry %s has an invalid value for " +
                     "configuration attribute " + ATTR_BIND_WITH_DN_REQUIRES_PW +
                     " (the value should be either \"TRUE\" or \"FALSE\"):  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_CONFIG_CORE_NO_DEFAULT_PWPOLICY,
                     "No default password policy was configured for the " +
                     "Directory Server.  This must be specified by the " +
                     ATTR_DEFAULT_PWPOLICY_DN + " attribute in configuration " +
-                    "entry %s.");
+                    "entry %s");
     registerMessage(MSGID_CONFIG_CORE_INVALID_DEFAULT_PWPOLICY_DN,
                     "Configuration entry %s has an invalid value for " +
                     "configuration attribute " + ATTR_DEFAULT_PWPOLICY_DN +
                     " (the value should a DN specifying the default " +
-                    "password policy configuration entry):  %s.");
+                    "password policy configuration entry):  %s");
     registerMessage(MSGID_CONFIG_CORE_NO_SUCH_PWPOLICY,
                     "The value %s for configuration attribute " +
                     ATTR_DEFAULT_PWPOLICY_DN + " does not refer to a valid " +
-                    "password policy configuration entry.");
+                    "password policy configuration entry");
 
 
     registerMessage(MSGID_CONFIG_JMX_ATTR_NO_VALUE,
                     "Configuration entry %s does not contain a value for " +
-                    "attribute %s.");
+                    "attribute %s");
     registerMessage(MSGID_CONFIG_JMX_ATTR_NO_ATTR,
                     "Configuration entry %s does not contain attribute %s " +
                     "(or that attribute exists but is not accessible using " +
-                    "JMX).");
+                    "JMX)");
     registerMessage(MSGID_CONFIG_JMX_CANNOT_GET_CONFIG_ENTRY,
                     "Unable to retrieve configuration entry %s for access " +
-                    "through JMX:  %s.");
+                    "through JMX:  %s");
     registerMessage(MSGID_CONFIG_JMX_ATTR_INVALID_VALUE,
                     "Attempted update to attribute %s of configuration entry " +
                     "%s over JMX would have resulted in an invalid value:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_CONFIG_JMX_UNACCEPTABLE_CONFIG,
                     "Update to configuration entry %s over JMX would have " +
-                    "resulted in an invalid configuration:  %s.");
+                    "resulted in an invalid configuration:  %s");
     registerMessage(MSGID_CONFIG_JMX_NO_METHOD,
                     "There is no method %s for any invokable component " +
-                    "registered with configuration entry %s.");
+                    "registered with configuration entry %s");
     registerMessage(MSGID_CONFIG_JMX_CANNOT_REGISTER_MBEAN,
                     "The Directory Server could not register a JMX MBean for " +
                     "the component associated with configuration entry %s:  " +
                     "%s ");
     registerMessage(MSGID_CONFIG_JMX_CANNOT_GET_ATTRIBUTE,
                     "Unable to retrieve JMX attribute %s associated with " +
-                    "configuration entry %s:  %s.");
+                    "configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_JMX_SET_ATTR_NO_CONNECTION,
                     "Unable to set the value of JMX attribute %s associated " +
                     "with configuration entry %s because no JMX connection " +
-                    "is avaialble.");
+                    "is avaialble");
 
 
     registerMessage(MSGID_CONFIG_WORK_QUEUE_DESCRIPTION_NUM_THREADS,
@@ -7273,7 +7273,7 @@
                     "system on which the server is running and the workload " +
                     "it needs to handle, and may best be determined by " +
                     "performance testing.  Changes to this attribute will " +
-                    "take effect immediately.");
+                    "take effect immediately");
     registerMessage(MSGID_CONFIG_WORK_QUEUE_DESCRIPTION_MAX_CAPACITY,
                     "Specifies the maximum number of pending requests that " +
                     "may be held in the work queue at any one time while all " +
@@ -7281,14 +7281,14 @@
                     "If this limit is reached, then any new requests will be " +
                     "rejected.  A value of 0 indicates that there is no " +
                     "limit.  Changes to this attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_CONFIG_WORK_QUEUE_CANNOT_DETERMINE_NUM_WORKER_THREADS,
                     "An error occurred while attempting to retrieve the " +
                     "value of the " + ATTR_NUM_WORKER_THREADS + " attribute " +
                     "from the %s entry, which is used to specify the number " +
                     "of worker threads to service the work queue:  %s.  The " +
                     "Directory Server will use the default value of " +
-                    DEFAULT_NUM_WORKER_THREADS + ".");
+                    DEFAULT_NUM_WORKER_THREADS + "");
     registerMessage(MSGID_CONFIG_WORK_QUEUE_CANNOT_DETERMINE_QUEUE_CAPACITY,
                     "An error occurred while attempting to retrieve the " +
                     "value of the " + ATTR_MAX_WORK_QUEUE_CAPACITY +
@@ -7296,43 +7296,43 @@
                     "the maximum number of pending operations that may be " +
                     "held in the work queue:  %s.  The Directory Server will " +
                     "use the default value of " +
-                    DEFAULT_MAX_WORK_QUEUE_CAPACITY + ".");
+                    DEFAULT_MAX_WORK_QUEUE_CAPACITY + "");
     registerMessage(MSGID_CONFIG_WORK_QUEUE_NUM_THREADS_INVALID_VALUE,
                     "The value of configuration attribute " +
                     ATTR_NUM_WORKER_THREADS + " in configuration entry %s " +
                     "has an invalid value (%d).  This attribute requires " +
-                    "an integer value greater than zero.");
+                    "an integer value greater than zero");
     registerMessage(MSGID_CONFIG_WORK_QUEUE_CAPACITY_INVALID_VALUE,
                     "The value of configuration attribute " +
                     ATTR_MAX_WORK_QUEUE_CAPACITY + " in configuration entry " +
                     "%s has an invalid value (%d).  This attribute requires " +
-                    "an integer value greater than or equal to zero.");
+                    "an integer value greater than or equal to zero");
     registerMessage(MSGID_CONFIG_WORK_QUEUE_CREATED_THREADS,
                     "%d additional worker threads have been created to bring " +
-                    "the total number of available threads to %d.");
+                    "the total number of available threads to %d");
     registerMessage(MSGID_CONFIG_WORK_QUEUE_DESTROYING_THREADS,
                     "%d worker threads will terminate as soon as it is " +
                     "convenient to do so (it may take a couple of seconds " +
                     "for the threads to actually exit) to bring the total " +
-                    "number of available threads to %d.");
+                    "number of available threads to %d");
     registerMessage(MSGID_CONFIG_WORK_QUEUE_NEW_CAPACITY,
                     "The work queue capacity has been updated to use a new "+
-                    "value of %d.");
+                    "value of %d");
     registerMessage(MSGID_CONFIG_WORK_QUEUE_TOO_MANY_FAILURES,
                     "Worker thread \"%s\" has experienced too many repeated " +
                     "failures while attempting to retrieve the next " +
                     "operation from the work queue (%d failures experienced, " +
                     "maximum of %d failures allowed).  This worker thread " +
-                    "will be destroyed.");
+                    "will be destroyed");
     registerMessage(MSGID_CONFIG_WORK_QUEUE_CANNOT_CREATE_MONITOR,
                     "A problem occurred while trying to create and start an " +
                     "instance of class %s to use as a monitor provider for " +
                     "the Directory Server work queue:  %s.  No monitor " +
-                    "information will be available for the work queue.");
+                    "information will be available for the work queue");
 
    registerMessage(MSGID_CONFIG_DESCRIPTION_BACKEND_DIRECTORY,
                    "The name of the directory in which backend database " +
-                   "files are stored.");
+                   "files are stored");
    registerMessage(MSGID_CONFIG_BACKEND_NO_DIRECTORY,
                    "Configuration entry %s does not contain a valid value " +
                    "for configuration attribute " +
@@ -7341,49 +7341,49 @@
 
     registerMessage(MSGID_CONFIG_ATTR_DN_NULL,
                     "A null value was provided for DN configuration " +
-                    "attribute %s.");
+                    "attribute %s");
     registerMessage(MSGID_CONFIG_ATTR_DN_CANNOT_PARSE,
                     "An error occurred while trying to parse value \"%s\" of " +
-                    "attribute %s as a DN:  %s.");
+                    "attribute %s as a DN:  %s");
     registerMessage(MSGID_CONFIG_ATTR_INVALID_DN_VALUE,
                     "Unable to parse value %s for configuration attribute %s " +
-                    "as a DN:  %s.");
+                    "as a DN:  %s");
     registerMessage(MSGID_CONFIG_ATTR_DN_INVALID_TYPE,
                     "Unable to parse value %s for configuration attribute %s " +
-                    "as a DN because the element was of an invalid type (%s).");
+                    "as a DN because the element was of an invalid type (%s)");
     registerMessage(MSGID_CONFIG_ATTR_DN_INVALID_ARRAY_TYPE,
                     "Unable to parse value for configuration attribute %s " +
                     "as a set of DN values because the array contained " +
-                    "elements of an invalid type (%s).");
+                    "elements of an invalid type (%s)");
 
 
     registerMessage(MSGID_CONFIG_BACKEND_CANNOT_GET_CONFIG_BASE,
                     "An error occurred while trying to retrieve " +
                     "configuration entry " + DN_BACKEND_BASE + " in order to " +
-                    "initialize the Directory Server backends:  %s.");
+                    "initialize the Directory Server backends:  %s");
     registerMessage(MSGID_CONFIG_BACKEND_BASE_DOES_NOT_EXIST,
                     "The entry " + DN_BACKEND_BASE +  " does not appear to " +
                     "exist in the Directory Server configuration.  This is a " +
-                    "required entry.");
+                    "required entry");
     registerMessage(MSGID_CONFIG_BACKEND_ENTRY_DOES_NOT_HAVE_BACKEND_CONFIG,
                     "Configuration entry %s exists below the backend " +
                     "configuration root of " + DN_BACKEND_BASE + " but does " +
                     "not have objectclass " + OC_BACKEND + " that is " +
                     "required for a Directory Server backend.  This " +
-                    "configuration entry will be ignored.");
+                    "configuration entry will be ignored");
     registerMessage(MSGID_CONFIG_BACKEND_ERROR_INTERACTING_WITH_BACKEND_ENTRY,
                     "An unexpected error occurred while interacting with " +
-                    "backend configuration entry %s:  %s.");
+                    "backend configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_BACKEND_ATTR_DESCRIPTION_ENABLED,
                     "Indicates whether this backend should be enabled for " +
                     "use in the Directory Server.  This may be altered while " +
                     "the Directory Server is online, but if a backend is " +
-                    "disabled, then it will not be available for use.");
+                    "disabled, then it will not be available for use");
     registerMessage(MSGID_CONFIG_BACKEND_ATTR_DESCRIPTION_BACKEND_ID,
                     "Specifies the unique identifier for this backend.  " +
                     "Changes to this configuration attribute will not take " +
                     "effect until the backend is disabled and re-enabled or " +
-                    "the server is restarted.");
+                    "the server is restarted");
     registerMessage(MSGID_CONFIG_BACKEND_ATTR_DESCRIPTION_WRITABILITY,
                     "Specifies the writability mode for this backend.  The " +
                     "value may be \"enabled\" if all write operations will " +
@@ -7391,328 +7391,328 @@
                     "be rejected, or \"internal-only\" if only internal " +
                     "write operations and synchronization updates will be " +
                     "allowed.  Changes to this configuration attribute will " +
-                    "take effect immediately.");
+                    "take effect immediately");
     registerMessage(MSGID_CONFIG_BACKEND_ATTR_DESCRIPTION_CLASS,
                     "Specifies the fully-qualified name of the Java class " +
                     "that should provide the core logic for this backend " +
                     "implementation.  Changes to this configuration " +
                     "attribute will not take effect until the backend is "+
-                    "disabled and re-enabled or the server is restarted.");
+                    "disabled and re-enabled or the server is restarted");
     registerMessage(MSGID_CONFIG_BACKEND_NO_ENABLED_ATTR,
                     "Backend configuration entry %s does not contain " +
                     "attribute " + ATTR_BACKEND_ENABLED + ", which is used " +
                     "to indicate whether the backend should be enabled or " +
                     "disabled.  Without this attribute, it will default to " +
-                    "being disabled.");
+                    "being disabled");
     registerMessage(MSGID_CONFIG_BACKEND_DISABLED,
                     "The backend defined in configuration entry %s is " +
-                    "marked as disabled and therefore will not be used.");
+                    "marked as disabled and therefore will not be used");
     registerMessage(MSGID_CONFIG_BACKEND_UNABLE_TO_DETERMINE_ENABLED_STATE,
                     "An unexpected error occurred while attempting to " +
                     "determine whether the backend associated with " +
                     "configuration entry %s should be enabled or disabled:  " +
-                    "%s.  It will be disabled.");
+                    "%s.  It will be disabled");
     registerMessage(MSGID_CONFIG_BACKEND_NO_BACKEND_ID,
                     "Backend configuration entry %s does not contain " +
                     "attribute " + ATTR_BACKEND_ID + ", which is used " +
                     "to provide a unique identifier for the backend.  The " +
-                    "backend will be disabled.");
+                    "backend will be disabled");
     registerMessage(MSGID_CONFIG_BACKEND_DUPLICATE_BACKEND_ID,
                     "The backend defined in configuration entry %s has a " +
                     "backend ID of %s that conflicts with the backend ID for " +
                     "another backend in the server.  The backend will be " +
-                    "disabled.");
+                    "disabled");
     registerMessage(MSGID_CONFIG_BACKEND_UNABLE_TO_DETERMINE_BACKEND_ID,
                     "An unexpected error occurred while attempting to " +
                     "determine the backend ID for the backend defined in " +
                     "configuration entry %s:  %s.  The backend will be " +
-                    "disabled.");
+                    "disabled");
     registerMessage(MSGID_CONFIG_BACKEND_NO_WRITABILITY_MODE,
                     "The backend defined in configuration entry %s does not " +
                     "have a value for configuration attribute " +
                     ATTR_BACKEND_WRITABILITY_MODE + " which indicates the " +
                     "writability mode for that backend.  The backend will be " +
-                    "disabled.");
+                    "disabled");
     registerMessage(MSGID_CONFIG_BACKEND_INVALID_WRITABILITY_MODE,
                     "The backend defined in configuration entry %s has an " +
                     "invalid writability mode of %s.  The backend will be " +
-                    "disabled.");
+                    "disabled");
     registerMessage(MSGID_CONFIG_BACKEND_UNABLE_TO_DETERMINE_WRITABILITY,
                     "An unexpected error occurred while attempting to " +
                     "determine the writability mode for the backend defined " +
                     "in configuration entry %s:  %s.  The backend will be " +
-                    "disabled.");
+                    "disabled");
     registerMessage(MSGID_CONFIG_BACKEND_NO_CLASS_ATTR,
                     "Backend configuration entry %s does not contain " +
                     "attribute " + ATTR_BACKEND_CLASS + ", which is used to " +
                     "specify the name of the class used to provide the " +
                     "backend implementation.  The backend associated with " +
-                    "this configuration entry will be disabled.");
+                    "this configuration entry will be disabled");
     registerMessage(MSGID_CONFIG_BACKEND_CANNOT_GET_CLASS,
                     "An unexpected error occurred while trying to determine " +
                     "the name of the Java class that contains the " +
                     "implementation for backend %s:  %s.  This backend will " +
-                    "be disabled.");
+                    "be disabled");
     registerMessage(MSGID_CONFIG_BACKEND_CANNOT_INSTANTIATE,
                     "The Directory Server was unable to load class %s and " +
                     "use it to create a backend instance as defined in " +
                     "configuration entry %s.  The error that occurred was:  " +
-                    "%s.  This backend will be disabled.");
+                    "%s.  This backend will be disabled");
     registerMessage(MSGID_CONFIG_BACKEND_CANNOT_ACQUIRE_SHARED_LOCK,
                     "The Directory Server was unable to acquire a shared " +
                     "lock for backend %s:  %s.  This generally means that " +
                     "the backend is in use by a process that requires an " +
                     "exclusive lock (e.g., importing from LDIF or restoring " +
-                    "a backup).  This backend will be disabled.");
+                    "a backup).  This backend will be disabled");
     registerMessage(MSGID_CONFIG_BACKEND_CANNOT_INITIALIZE,
                     "An error occurred while trying to initialize a backend " +
                     "loaded from class %s with the information in " +
                     "configuration entry %s:  %s.  This backend will be " +
-                    "disabled.");
+                    "disabled");
     registerMessage(MSGID_CONFIG_BACKEND_CANNOT_RELEASE_SHARED_LOCK,
                     "An error occurred while attempting to release a shared " +
                     "lock for backend %s:  %s.  This may interfere with " +
                     "operations that require exclusive access, including " +
-                    "LDIF import and restoring a backup.");
+                    "LDIF import and restoring a backup");
     registerMessage(MSGID_CONFIG_BACKEND_CANNOT_REGISTER_BACKEND,
                     "An error occurred while attempting to register backend " +
-                    "%s with the Directory Server:  %s.");
+                    "%s with the Directory Server:  %s");
     registerMessage(MSGID_CONFIG_BACKEND_CLASS_NOT_BACKEND,
                     "The class %s specified in configuration entry %s does " +
                     "not contain a valid Directory Server backend " +
-                    "implementation.");
+                    "implementation");
     registerMessage(MSGID_CONFIG_BACKEND_ACTION_REQUIRED_TO_CHANGE_CLASS,
                     "The requested change to configuration entry %s would " +
                     "cause the class for the associated backend to change " +
                     "from %s to %s.  This change will not take effect until " +
                     "the backend is disabled and re-enabled, or until the " +
-                    "Directory Server is restarted.");
+                    "Directory Server is restarted");
     registerMessage(
          MSGID_CONFIG_BACKEND_CANNOT_REMOVE_BACKEND_WITH_SUBORDINATES,
          "The backend defined in configuration entry %s has one or more " +
          "subordinate backends.  A backend may not be removed if it has " +
-         "subordinate backends.");
+         "subordinate backends");
     registerMessage(MSGID_CONFIG_BACKEND_UNACCEPTABLE_CONFIG,
                     "The configuration for the backend defined in " +
                     "configuration entry %s was not acceptable according to " +
                     "its internal validation.  However, no specific " +
                     "information is available regarding the problem(s) with " +
-                    "the entry.");
+                    "the entry");
     registerMessage(MSGID_CONFIG_BACKEND_ATTR_DESCRIPTION_BASE_DNS,
                     "Specifies the set of base DNs that should be used for " +
                     "this backend.  It is up to the backend implementation " +
                     "as to whether changes to this attribute will " +
-                    "automatically take effect.");
+                    "automatically take effect");
     registerMessage(MSGID_CONFIG_BACKEND_NO_BASE_DNS,
                     "Backend configuration entry %s does not contain " +
                     "attribute " + ATTR_BACKEND_BASE_DN + ", which is used " +
                     "to specify the set of base DNs for the backend.  This " +
                     "is a required attribute, and therefore the backend will " +
-                    "be disabled.");
+                    "be disabled");
     registerMessage(MSGID_CONFIG_BACKEND_UNABLE_TO_DETERMINE_BASE_DNS,
                     "An unexpected error occurred while attempting to " +
                     "determine the set of base DNs associated with the " +
                     "backend defined in configuration entry %s:  %s.  This " +
-                    "backend will be disabled.");
+                    "backend will be disabled");
 
 
     registerMessage(MSGID_CONFIG_MONITOR_CANNOT_GET_BASE,
                     "An error occurred while attempting to retrieve the " +
                     "base monitor entry " + DN_MONITOR_CONFIG_BASE +
-                    " from the Directory Server configuration:  %s.");
+                    " from the Directory Server configuration:  %s");
     registerMessage(MSGID_CONFIG_MONITOR_BASE_DOES_NOT_EXIST,
                     "The monitor configuration base " + DN_MONITOR_CONFIG_BASE +
                     " does not exist in the Directory Server configuration.  " +
-                    "Only limited monitoring information will be available.");
+                    "Only limited monitoring information will be available");
     registerMessage(MSGID_CONFIG_MONITOR_ENTRY_UNACCEPTABLE,
                     "Configuration entry %s does not contain a valid monitor " +
-                    "provider configuration:  %s.  It will be ignored.");
+                    "provider configuration:  %s.  It will be ignored");
     registerMessage(MSGID_CONFIG_MONITOR_CANNOT_CREATE_MONITOR,
                     "An error occurred while attempting to create a " +
                     "Directory Server monitor provider from the information " +
-                    "in configuration entry %s:  %s.");
+                    "in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_MONITOR_INVALID_OBJECTCLASS,
                     "Configuration entry %s does not contain the " +
                     OC_MONITOR_PROVIDER + " objectclass, which is required " +
-                    "for monitor provider definitions.");
+                    "for monitor provider definitions");
     registerMessage(MSGID_CONFIG_MONITOR_DESCRIPTION_CLASS_NAME,
                     "The fully-qualified name of the Java class that defines " +
                     "the Directory Server monitor provider.  If this is " +
                     "altered while the associated monitor is enabled, then " +
                     "that monitor must be disabled and re-enabled for the " +
-                    "change to take effect.");
+                    "change to take effect");
     registerMessage(MSGID_CONFIG_MONITOR_NO_CLASS_NAME,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " + ATTR_MONITOR_CLASS +
                     " which specifies the fully-qualified class name for " +
-                    "the associated monitor provider.");
+                    "the associated monitor provider");
     registerMessage(MSGID_CONFIG_MONITOR_INVALID_CLASS_NAME,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_MONITOR_CLASS + ":  %s.");
+                    "attribute " + ATTR_MONITOR_CLASS + ":  %s");
     registerMessage(MSGID_CONFIG_MONITOR_INVALID_CLASS,
                     "Class %s specified in configuration entry %s does not " +
-                    "contain a valid monitor provider implementation:  %s.");
+                    "contain a valid monitor provider implementation:  %s");
     registerMessage(MSGID_CONFIG_MONITOR_DESCRIPTION_ENABLED,
                     "Indicates whether this Directory Server monitor " +
                     "provider should be enabled.  Changes to this attribute " +
-                    "will take effect immediately.");
+                    "will take effect immediately");
     registerMessage(MSGID_CONFIG_MONITOR_NO_ENABLED_ATTR,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " + ATTR_MONITOR_ENABLED +
                     " which indicates whether the monitor provider should be " +
-                    "enabled for use in the Directory Server.");
+                    "enabled for use in the Directory Server");
     registerMessage(MSGID_CONFIG_MONITOR_INVALID_ENABLED_VALUE,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_MONITOR_ENABLED + ":  %s.");
+                    "attribute " + ATTR_MONITOR_ENABLED + ":  %s");
     registerMessage(MSGID_CONFIG_MONITOR_CLASS_ACTION_REQUIRED,
                     "The requested change in the monitor class name from %s " +
                     "to %s in configuration entry %s cannot be dynamically " +
                     "applied.  This change will not take effect until the " +
                     "monitor provider is disabled and re-enabled or the " +
-                    "Directory Server is restarted.");
+                    "Directory Server is restarted");
     registerMessage(MSGID_CONFIG_MONITOR_INITIALIZATION_FAILED,
                     "An error occurred while trying to initialize an " +
                     "instance of class %s as a monitor provider as defined " +
-                    "in configuration entry %s:  %s.");
+                    "in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_MONITOR_EXISTS,
                     "Unable to add a new monitor provider entry with DN %s " +
                     "because there is already a monitor provider registered " +
-                    "with that DN.");
+                    "with that DN");
     registerMessage(MSGID_CONFIG_MONITOR_UNACCEPTABLE_CONFIG,
                     "The configuration for the monitor provider defined in " +
                     "configuration entry %s was not acceptable according to " +
                     "its internal validation.  However, no specific " +
                     "information is available regarding the problem(s) with " +
-                    "the entry.");
+                    "the entry");
 
 
     registerMessage(MSGID_CONFIG_CONNHANDLER_CANNOT_GET_CONFIG_BASE,
                     "An error occurred while trying to retrieve " +
                     "configuration entry " + DN_CONNHANDLER_BASE +
                     " in order to initialize the Directory Server backends:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_CONFIG_CONNHANDLER_BASE_DOES_NOT_EXIST,
                     "The entry " + DN_CONNHANDLER_BASE +  " does not appear " +
                     "to exist in the Directory Server configuration.  This " +
-                    "is a required entry.");
+                    "is a required entry");
     registerMessage(
          MSGID_CONFIG_CONNHANDLER_ENTRY_DOES_NOT_HAVE_CONNHANDLER_CONFIG,
          "Configuration entry %s exists below the connection handler " +
          "configuration root of " + DN_CONNHANDLER_BASE + " but does not " +
          "have objectclass " + OC_CONNECTION_HANDLER + " that is required " +
          "for a Directory Server connection handler.  This configuration " +
-         "entry will be ignored.");
+         "entry will be ignored");
     registerMessage(
          MSGID_CONFIG_CONNHANDLER_ERROR_INTERACTING_WITH_CONNHANDLER_ENTRY,
          "An unexpected error occurred while interacting with connection " +
-         "handler configuration entry %s:  %s.");
+         "handler configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_CONNHANDLER_ATTR_DESCRIPTION_ENABLED,
                     "Indicates whether this connection handler should be " +
                     "enabled for use in the Directory Server.  This may be " +
                     "altered while the Directory Server is online, but if a " +
                     "connection handler is disabled, then it will not be " +
-                    "available for use.");
+                    "available for use");
     registerMessage(MSGID_CONFIG_CONNHANDLER_ATTR_DESCRIPTION_CLASS,
                     "Specifies the fully-qualified name of the Java class " +
                     "that should provide the core logic for this connection " +
                     "handler implementation.  Changes to this configuration " +
                     "attribute will not take effect until the connection " +
                     "handler is disabled and re-enabled or the server is " +
-                    "restarted.");
+                    "restarted");
     registerMessage(MSGID_CONFIG_CONNHANDLER_NO_ENABLED_ATTR,
                     "Connection handler configuration entry %s does not " +
                     "contain attribute " + ATTR_CONNECTION_HANDLER_ENABLED +
                     ", which is used to indicate whether the connection " +
                     "handler should be enabled or disabled.  Without this " +
-                    "attribute, it will default to being disabled.");
+                    "attribute, it will default to being disabled");
     registerMessage(MSGID_CONFIG_CONNHANDLER_DISABLED,
                     "The connection handler defined in configuration entry " +
-                    "%s is marked as disabled and therefore will not be used.");
+                    "%s is marked as disabled and therefore will not be used");
     registerMessage(MSGID_CONFIG_CONNHANDLER_UNABLE_TO_DETERMINE_ENABLED_STATE,
                     "An unexpected error occurred while attempting to " +
                     "determine whether the connection handler associated " +
                     "with configuration entry %s should be enabled or " +
-                    "disabled:  %s.  It will be disabled.");
+                    "disabled:  %s.  It will be disabled");
     registerMessage(MSGID_CONFIG_CONNHANDLER_NO_CLASS_ATTR,
                     "Connection handler configuration entry %s does not " +
                     "contain attribute " + ATTR_CONNECTION_HANDLER_CLASS +
                     ", which is used to specify the name of the class used " +
                     "to provide the connection handler implementation.  The " +
                     "connection handler associated with this configuration " +
-                    "entry will be disabled.");
+                    "entry will be disabled");
     registerMessage(MSGID_CONFIG_CONNHANDLER_CANNOT_GET_CLASS,
                     "An unexpected error occurred while trying to determine " +
                     "the name of the Java class that contains the " +
                     "implementation for connection handler %s:  %s.  This " +
-                    "connection handler will be disabled.");
+                    "connection handler will be disabled");
     registerMessage(MSGID_CONFIG_CONNHANDLER_CANNOT_INSTANTIATE,
                     "The Directory Server was unable to load class %s and " +
                     "use it to create a connection handler instance as " +
                     "defined in configuration entry %s.  The error that " +
                     "occurred was:  %s.  This connection handler will be " +
-                    "disabled.");
+                    "disabled");
     registerMessage(MSGID_CONFIG_CONNHANDLER_CANNOT_INITIALIZE,
                     "An error occurred while trying to initialize a " +
                     "connection handler loaded from class %s with the " +
                     "information in configuration entry %s:  %s.  This " +
-                    "connection handler will be disabled.");
+                    "connection handler will be disabled");
     registerMessage(MSGID_CONFIG_CONNHANDLER_UNACCEPTABLE_CONFIG,
                     "The configuration for the connection handler defined in " +
                     "configuration entry %s was not acceptable according to " +
                     "its internal validation.  However, no specific " +
                     "information is available regarding the problem(s) with " +
-                    "the entry.");
+                    "the entry");
     registerMessage(MSGID_CONFIG_CONNHANDLER_CLASS_NOT_CONNHANDLER,
                     "The class %s specified in configuration entry %s does " +
                     "not contain a valid Directory Server connection handler " +
-                    "implementation.");
+                    "implementation");
 
 
     registerMessage(MSGID_CONFIG_SCHEMA_CANNOT_GET_MR_BASE,
                     "An error occurred while trying to retrieve " +
                     "configuration entry " + DN_MATCHING_RULE_CONFIG_BASE +
                     " in order to initialize the Directory Server matching " +
-                    "rules:  %s.");
+                    "rules:  %s");
     registerMessage(MSGID_CONFIG_SCHEMA_MR_BASE_DOES_NOT_EXIST,
                     "The entry " + DN_MATCHING_RULE_CONFIG_BASE +
                     " does not appear to exist in the Directory Server " +
-                    "configuration.  This is a required entry.");
+                    "configuration.  This is a required entry");
     registerMessage(MSGID_CONFIG_SCHEMA_NO_MATCHING_RULES,
                     "No child entries were found below the entry " +
                     DN_MATCHING_RULE_CONFIG_BASE + " to define the matching " +
                     "rules for use in the Directory Server.  This is an " +
                     "error, because the Directory Server must have matching " +
-                    "rules defined to function properly.");
+                    "rules defined to function properly");
     registerMessage(MSGID_CONFIG_SCHEMA_ENTRY_DOES_NOT_HAVE_MR_CONFIG,
                     "Configuration entry %s exists below the matching rule " +
                     "configuration root of " + DN_MATCHING_RULE_CONFIG_BASE +
                     " but does not have objectclass " + OC_MATCHING_RULE +
                     " that is required for a Directory Server matching " +
-                    "rule.  This configuration entry will be ignored.");
+                    "rule.  This configuration entry will be ignored");
     registerMessage(MSGID_CONFIG_SCHEMA_MR_ATTR_DESCRIPTION_ENABLED,
                     "Indicates whether this matching rule should be enabled " +
                     "for use in the Directory Server.  This may be altered " +
                     "while the Directory Server is online, but if a matching " +
                     "rule is disabled, after it has been used for one or " +
                     "more attributes then matching may no longer function " +
-                    "as expected for those attributes.");
+                    "as expected for those attributes");
     registerMessage(MSGID_CONFIG_SCHEMA_MR_NO_ENABLED_ATTR,
                     "Matching rule configuration entry %s does not contain " +
                     "attribute " + ATTR_MATCHING_RULE_ENABLED + ", which is " +
                     "used to indicate whether the matching rule should be " +
                     "enabled or disabled.  Without this attribute, it will " +
-                    "default to being disabled.");
+                    "default to being disabled");
     registerMessage(MSGID_CONFIG_SCHEMA_MR_DISABLED,
                     "The matching rule defined in configuration entry " +
                     "%s is marked as disabled and therefore will not be " +
                     "used.  If it has been used in the past for one or more " +
                     "attributes, then matching may no longer function for " +
-                    "values of those attributes.");
+                    "values of those attributes");
     registerMessage(MSGID_CONFIG_SCHEMA_MR_UNABLE_TO_DETERMINE_ENABLED_STATE,
                     "An unexpected error occurred while attempting to " +
                     "determine whether the matching rule associated with " +
                     "configuration entry %s should be enabled or disabled:  " +
-                    "%s.  It will be disabled.");
+                    "%s.  It will be disabled");
     registerMessage(MSGID_CONFIG_SCHEMA_MR_ATTR_DESCRIPTION_CLASS,
                     "Specifies the fully-qualified name of the Java class " +
                     "that should provide the core logic for this matching " +
@@ -7722,81 +7722,81 @@
                     "restarted.  Also, changes to the matching rule class " +
                     "for matching rules that have already been used for one " +
                     "or more attributes may cause unexpected results when " +
-                    "performing matching for those attributes.");
+                    "performing matching for those attributes");
     registerMessage(MSGID_CONFIG_SCHEMA_MR_NO_CLASS_ATTR,
                     "Matching rule configuration entry %s does not contain " +
                     "attribute " + ATTR_MATCHING_RULE_CLASS + ", which is " +
                     "used to specify the name of the class used to provide " +
                     "the matching rule implementation.  The matching rule " +
                     "associated with this configuration entry will be " +
-                    "disabled.");
+                    "disabled");
     registerMessage(MSGID_CONFIG_SCHEMA_MR_CANNOT_GET_CLASS,
                     "An unexpected error occurred while trying to determine " +
                     "the name of the Java class that contains the " +
                     "implementation for matching rule %s:  %s.  This " +
-                    "matching rule will be disabled.");
+                    "matching rule will be disabled");
     registerMessage(MSGID_CONFIG_SCHEMA_MR_CANNOT_INSTANTIATE,
                     "The Directory Server was unable to load class %s and " +
                     "use it to create a matching rule instance as defined in " +
                     "configuration entry %s.  The error that occurred was:  " +
-                    "%s.  This matching rule will be disabled.");
+                    "%s.  This matching rule will be disabled");
     registerMessage(MSGID_CONFIG_SCHEMA_MR_CANNOT_INITIALIZE,
                     "An error occurred while trying to initialize a matching " +
                     "rule loaded from class %s with the information in " +
                     "configuration entry %s:  %s.  This matching rule will " +
-                    "be disabled.");
+                    "be disabled");
     registerMessage(MSGID_CONFIG_SCHEMA_MR_CONFLICTING_MR,
                     "The matching rule defined in configuration entry %s " +
                     "conflicts with another matching rule defined in the " +
                     "server configuration:  %s.  This matching rule will not " +
-                    "be used.");
+                    "be used");
 
 
     registerMessage(MSGID_CONFIG_SCHEMA_CANNOT_GET_SYNTAX_BASE,
                     "An error occurred while trying to retrieve " +
                     "configuration entry " + DN_SYNTAX_CONFIG_BASE +
                     " in order to initialize the Directory Server attribute " +
-                    "syntaxes:  %s.");
+                    "syntaxes:  %s");
     registerMessage(MSGID_CONFIG_SCHEMA_SYNTAX_BASE_DOES_NOT_EXIST,
                     "The entry " + DN_SYNTAX_CONFIG_BASE +
                     " does not appear to exist in the Directory Server " +
-                    "configuration.  This is a required entry.");
+                    "configuration.  This is a required entry");
     registerMessage(MSGID_CONFIG_SCHEMA_NO_SYNTAXES,
                     "No child entries were found below the entry " +
                     DN_SYNTAX_CONFIG_BASE + " to define the attribute " +
                     "syntaxes for use in the Directory Server.  This is an " +
                     "error, because the Directory Server must have syntaxes " +
-                    "defined to function properly.");
+                    "defined to function properly");
     registerMessage(MSGID_CONFIG_SCHEMA_ENTRY_DOES_NOT_HAVE_SYNTAX_CONFIG,
                     "Configuration entry %s exists below the attribute " +
                     "syntax configuration root of " + DN_SYNTAX_CONFIG_BASE +
                     " but does not have objectclass " + OC_ATTRIBUTE_SYNTAX +
                     " that is required for a Directory Server attribute " +
-                    "syntax.  This configuration entry will be ignored.");
+                    "syntax.  This configuration entry will be ignored");
     registerMessage(MSGID_CONFIG_SCHEMA_SYNTAX_ATTR_DESCRIPTION_ENABLED,
                     "Indicates whether this attribute syntax should be " +
                     "enabled for use in the Directory Server.  This may be " +
                     "altered while the Directory Server is online, but if a " +
                     "syntax is disabled, after it has been used for one or " +
                     "more attributes then matching may no longer function " +
-                    "as expected for those attributes.");
+                    "as expected for those attributes");
     registerMessage(MSGID_CONFIG_SCHEMA_SYNTAX_NO_ENABLED_ATTR,
                     "Attribute syntax configuration entry %s does not " +
                     "contain attribute " + ATTR_SYNTAX_ENABLED + ", which is " +
                     "used to indicate whether the syntax should be enabled " +
                     "or disabled.  Without this attribute, it will default " +
-                    "to being disabled.");
+                    "to being disabled");
     registerMessage(MSGID_CONFIG_SCHEMA_SYNTAX_DISABLED,
                     "The attribute syntax defined in configuration entry " +
                     "%s is marked as disabled and therefore will not be " +
                     "used.  If it has been used in the past for one or more " +
                     "attributes, then matching may no longer function for " +
-                    "values of those attributes.");
+                    "values of those attributes");
     registerMessage(
          MSGID_CONFIG_SCHEMA_SYNTAX_UNABLE_TO_DETERMINE_ENABLED_STATE,
          "An unexpected error occurred while attempting to determine whether " +
          "the attribute syntax associated with configuration entry %s should " +
-         "be enabled or disabled:  %s.  It will be disabled.");
+         "be enabled or disabled:  %s.  It will be disabled");
     registerMessage(MSGID_CONFIG_SCHEMA_SYNTAX_ATTR_DESCRIPTION_CLASS,
                     "Specifies the fully-qualified name of the Java class " +
                     "that should provide the core logic for this attribute " +
@@ -7806,133 +7806,133 @@
                     "Also, changes to the syntax class for attribute " +
                     "syntaxes that have already been used for one or more " +
                     "attributes may cause unexpected results when performing " +
-                    "matching for those attributes.");
+                    "matching for those attributes");
     registerMessage(MSGID_CONFIG_SCHEMA_SYNTAX_NO_CLASS_ATTR,
                     "Matching rule configuration entry %s does not contain " +
                     "attribute " + ATTR_SYNTAX_CLASS + ", which is used to " +
                     "specify the name of the class used to provide the " +
                     "attribute syntax implementation.  The syntax associated " +
-                    "with this configuration entry will be disabled.");
+                    "with this configuration entry will be disabled");
     registerMessage(MSGID_CONFIG_SCHEMA_SYNTAX_CANNOT_GET_CLASS,
                     "An unexpected error occurred while trying to determine " +
                     "the name of the Java class that contains the " +
                     "implementation for attribute syntax %s:  %s.  This " +
-                    "syntax will be disabled.");
+                    "syntax will be disabled");
     registerMessage(MSGID_CONFIG_SCHEMA_SYNTAX_CANNOT_INSTANTIATE,
                     "The Directory Server was unable to load class %s and " +
                     "use it to create an attribute syntax instance as " +
                     "defined in configuration entry %s.  The error that " +
-                    "occurred was:  %s.  This syntax will be disabled.");
+                    "occurred was:  %s.  This syntax will be disabled");
     registerMessage(MSGID_CONFIG_SCHEMA_SYNTAX_CANNOT_INITIALIZE,
                     "An error occurred while trying to initialize an " +
                     "attribute syntax loaded from class %s with the " +
                     "information in configuration entry %s:  %s.  This " +
-                    "syntax will be disabled.");
+                    "syntax will be disabled");
     registerMessage(MSGID_CONFIG_SCHEMA_SYNTAX_CONFLICTING_SYNTAX,
                     "The attribute syntax defined in configuration entry %s " +
                     "conflicts with another syntax defined in the server " +
                     "configuration:  %s.  This attribute syntax will not be " +
-                    "used.");
+                    "used");
 
 
     registerMessage(MSGID_CONFIG_SCHEMA_NO_SCHEMA_DIR,
                     "Unable to read the Directory Server schema definitions " +
-                    "because the schema directory %s does not exist.");
+                    "because the schema directory %s does not exist");
     registerMessage(MSGID_CONFIG_SCHEMA_DIR_NOT_DIRECTORY,
                     "Unable to read the Directory Server schema definitions " +
                     "because the schema directory %s exists but is not a " +
-                    "directory.");
+                    "directory");
     registerMessage(MSGID_CONFIG_SCHEMA_CANNOT_LIST_FILES,
                     "Unable to read the Directory Server schema definitions " +
                     "from directory %s because an unexpected error occurred " +
-                    "while trying to list the files in that directory:  %s.");
+                    "while trying to list the files in that directory:  %s");
     registerMessage(MSGID_CONFIG_SCHEMA_CANNOT_OPEN_FILE,
                     "Schema configuration file %s in directory %s cannot be " +
                     "parsed because an unexpected error occurred while " +
-                    "trying to open the file for reading:  %s.");
+                    "trying to open the file for reading:  %s");
     registerMessage(MSGID_CONFIG_SCHEMA_CANNOT_READ_LDIF_ENTRY,
                     "Schema configuration file %s in directory %s cannot be " +
                     "parsed because an unexpected error occurred while " +
-                    "trying to read its contents as an LDIF entry:  %s.");
+                    "trying to read its contents as an LDIF entry:  %s");
     registerMessage(MSGID_CONFIG_SCHEMA_CANNOT_PARSE_ATTR_TYPE,
                     "Unable to parse an attribute type definition from " +
-                    "schema configuration file %s:  %s.");
+                    "schema configuration file %s:  %s");
     registerMessage(MSGID_CONFIG_SCHEMA_CONFLICTING_ATTR_TYPE,
                     "An attribute type read from schema configuration file " +
                     "%s conflicts with another attribute type already read " +
                     "into the schema:  %s.  The later attribute type " +
-                    "definition will be used.");
+                    "definition will be used");
     registerMessage(MSGID_CONFIG_SCHEMA_CANNOT_PARSE_OC,
                     "Unable to parse an objectclass definition from schema " +
-                    "configuration file %s:  %s.");
+                    "configuration file %s:  %s");
     registerMessage(MSGID_CONFIG_SCHEMA_CONFLICTING_OC,
                     "An objectclass read from schema configuration file %s " +
                     "conflicts with another objectclass already read into " +
                     "the schema:  %s.  The later objectclass definition will " +
-                    "be used.");
+                    "be used");
     registerMessage(MSGID_CONFIG_SCHEMA_CANNOT_PARSE_NAME_FORM,
                     "Unable to parse a name form definition from schema " +
-                    "configuration file %s:  %s.");
+                    "configuration file %s:  %s");
     registerMessage(MSGID_CONFIG_SCHEMA_CONFLICTING_NAME_FORM,
                     "A name form read from schema configuration file %s " +
                     "conflicts with another name form already read into " +
                     "the schema:  %s.  The later name form definition will " +
-                    "be used.");
+                    "be used");
     registerMessage(MSGID_CONFIG_SCHEMA_CANNOT_PARSE_DCR,
                     "Unable to parse a DIT content rule definition from " +
-                    "schema configuration file %s:  %s.");
+                    "schema configuration file %s:  %s");
     registerMessage(MSGID_CONFIG_SCHEMA_CONFLICTING_DCR,
                     "A DIT content rule read from schema configuration file " +
                     "%s conflicts with another DIT content rule already read " +
                     "into the schema:  %s.  The later DIT content rule " +
-                    "definition will be used.");
+                    "definition will be used");
     registerMessage(MSGID_CONFIG_SCHEMA_CANNOT_PARSE_DSR,
                     "Unable to parse a DIT structure rule definition from " +
-                    "schema configuration file %s:  %s.");
+                    "schema configuration file %s:  %s");
     registerMessage(MSGID_CONFIG_SCHEMA_CONFLICTING_DSR,
                     "A DIT structure rule read from schema configuration " +
                     "file %s conflicts with another DIT structure rule " +
                     "already read into the schema:  %s.  The later DIT " +
-                    "structure rule definition will be used.");
+                    "structure rule definition will be used");
     registerMessage(MSGID_CONFIG_SCHEMA_CANNOT_PARSE_MRU,
                     "Unable to parse a matching rule use definition from " +
-                    "schema configuration file %s:  %s.");
+                    "schema configuration file %s:  %s");
     registerMessage(MSGID_CONFIG_SCHEMA_CONFLICTING_MRU,
                     "A matching rule use read from schema configuration " +
                     "file %s conflicts with another matching rule use " +
                     "already read into the schema:  %s.  The later matching " +
-                    "rule use definition will be used.");
+                    "rule use definition will be used");
 
 
     registerMessage(MSGID_CONFIG_ENTRYCACHE_CANNOT_INSTALL_DEFAULT_CACHE,
                     "An unexpected error occurred that prevented the server " +
                     "from installing a temporary default entry cache for " +
                     "use until the actual cache could be created from the " +
-                    "configuration:  %s.");
+                    "configuration:  %s");
     registerMessage(MSGID_CONFIG_ENTRYCACHE_CANNOT_GET_CONFIG_ENTRY,
                     "An unexpected error occurred while attempting to get " +
                     "the \"" + DN_ENTRY_CACHE_CONFIG + "\" entry, which " +
                     "holds the entry cache configuration:  %s.  No entry " +
-                    "cache will be available.");
+                    "cache will be available");
     registerMessage(MSGID_CONFIG_ENTRYCACHE_NO_CONFIG_ENTRY,
                     "The entry cache configuration entry \"" +
                     DN_ENTRY_CACHE_CONFIG + "\" does not exist in the " +
                     "Directory Server configuration.  No entry cache will " +
                     "be available until this entry is created with a valid " +
-                    "entry cache configuration.");
+                    "entry cache configuration");
     registerMessage(MSGID_CONFIG_ENTRYCACHE_CANNOT_REGISTER_ADD_LISTENER,
                     "An error occurred while attempting to register an " +
                     "add listener to watch for the entry cache configuration " +
                     "entry to be created:  %s.  If an entry cache " +
                     "configuration is added while the server is online, it " +
-                    "will not be detected until the server is restarted.");
+                    "will not be detected until the server is restarted");
     registerMessage(MSGID_CONFIG_ENTRYCACHE_CANNOT_REGISTER_DELETE_LISTENER,
                     "An error occurred while attempting to register a " +
                     "delete listener to watch for the entry cache " +
                     "configuration entry to be deleted: %s.  If the entry " +
                     "cache configuration entry is deleted while the server " +
                     "is online, it will not be detected until the server is " +
-                    "restarted.");
+                    "restarted");
     registerMessage(MSGID_CONFIG_ENTRYCACHE_DESCRIPTION_CACHE_ENABLED,
                     "Indicates whether the Directory Server entry cache " +
                     "should be enabled.  If the entry cache is enabled, it " +
@@ -7942,128 +7942,128 @@
                     "Changes to this configuration attribute will take " +
                     "effect immediately, but will have the side effect " +
                     "of clearing the cache contents, which may result in " +
-                    "degraded performance for a period of time.");
+                    "degraded performance for a period of time");
     registerMessage(MSGID_CONFIG_ENTRYCACHE_NO_ENABLED_ATTR,
                     "Configuration entry \"" + DN_ENTRY_CACHE_CONFIG +
                     "\" does not contain a value for attribute " +
                     ATTR_ENTRYCACHE_ENABLED + ", which indicates whether " +
                     "the entry cache is enabled for use in the server.  As a " +
-                    "result, the cache will be disabled.");
+                    "result, the cache will be disabled");
     registerMessage(MSGID_CONFIG_ENTRYCACHE_DISABLED,
                     "The Directory Server entry cache configured in entry \"" +
                     DN_ENTRY_CACHE_CONFIG + "\" has been disabled.  No entry " +
-                    "cache will be available within the server.");
+                    "cache will be available within the server");
     registerMessage(MSGID_CONFIG_ENTRYCACHE_UNABLE_TO_DETERMINE_ENABLED_STATE,
                     "An unexpected error occurred while attempting to " +
                     "determine whether the entry cache configured in entry \"" +
                     DN_ENTRY_CACHE_CONFIG + "\" is enabled:  %s.  As a " +
-                    "result, the entry cache will be disabled.");
+                    "result, the entry cache will be disabled");
     registerMessage(MSGID_CONFIG_ENTRYCACHE_DESCRIPTION_CACHE_CLASS,
                     "Specifies the fully-qualified name of the Java class " +
                     "that should provide the entry cache implementation.  " +
                     "Changes to this configuration attribute will take " +
                     "effect immediately, but will have the side effect of " +
                     "clearing the cache contents, which may result in " +
-                    "degraded performance for a period of time.");
+                    "degraded performance for a period of time");
     registerMessage(MSGID_CONFIG_ENTRYCACHE_NO_CLASS_ATTR,
                     "Configuration entry \"" + DN_ENTRY_CACHE_CONFIG +
                     "\" does not contain a value for attribute " +
                     ATTR_ENTRYCACHE_CLASS + "\", which specifies the class " +
                     "name for the entry cache implementation.  As a result, " +
-                    "the entry cache will be disabled.");
+                    "the entry cache will be disabled");
     registerMessage(MSGID_CONFIG_ENTRYCACHE_CANNOT_DETERMINE_CLASS,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " + ATTR_ENTRYCACHE_CLASS +
                     " attribute in configuration entry \"" +
                     DN_ENTRY_CACHE_CONFIG + "\":  %s.  The entry cache will " +
-                    "be disabled.");
+                    "be disabled");
     registerMessage(MSGID_CONFIG_ENTRYCACHE_CANNOT_LOAD_CLASS,
                     "The class %s defined in attribute " +
                     ATTR_ENTRYCACHE_CLASS + " of configuration entry \"" +
                     DN_ENTRY_CACHE_CONFIG + "\" could not be loaded:  %s.  " +
-                    "The entry cache will be disabled.");
+                    "The entry cache will be disabled");
     registerMessage(MSGID_CONFIG_ENTRYCACHE_CANNOT_INSTANTIATE_CLASS,
                     "The class %s defined in attribute " +
                     ATTR_ENTRYCACHE_CLASS + " of configuration entry \"" +
                     DN_ENTRY_CACHE_CONFIG + "\" could not be instantiated " +
                     "as a Directory Server entry cache:  %s.  As a result, " +
-                    "the entry cache will be disabled.");
+                    "the entry cache will be disabled");
     registerMessage(MSGID_CONFIG_ENTRYCACHE_CANNOT_INITIALIZE_CACHE,
                     "An error occurred while attempting to initialize " +
                     "an instance of class %s for use as the Directory Server " +
                     "entry cache:  %s.  As a result, the entry cache will be " +
-                    "disabled.");
+                    "disabled");
 
 
     registerMessage(MSGID_CONFIG_LOGGER_NO_ROTATION_POLICY,
                     "No file rotation policy has been defined in " +
-                    "configuration entry %s. No log rotation will take place.");
+                    "configuration entry %s. No log rotation will take place");
     registerMessage(MSGID_CONFIG_LOGGER_INVALID_ROTATION_POLICY,
                     "An invalid file rotation policy %s has been defined in " +
-                    "configuration entry %s.");
+                    "configuration entry %s");
     registerMessage(MSGID_CONFIG_LOGGER_NO_SIZE_LIMIT,
                     "No size limit has been defined for the size based file " +
-                    "rotation policy in the configuration entry %s.");
+                    "rotation policy in the configuration entry %s");
     registerMessage(MSGID_CONFIG_LOGGER_NO_TIME_LIMIT,
                     "No time limit has been defined for the time based file " +
-                    "rotation policy in the configuration entry %s.");
+                    "rotation policy in the configuration entry %s");
 
     registerMessage(MSGID_CONFIG_LOGGER_NO_RETENTION_POLICY,
                     "No file retention policy has been defined in " +
-                    "configuration entry %s. No log files will be deleted.");
+                    "configuration entry %s. No log files will be deleted");
     registerMessage(MSGID_CONFIG_LOGGER_INVALID_RETENTION_POLICY,
                     "An invalid file retention policy %s has been defined in " +
-                    "configuration entry %s.");
+                    "configuration entry %s");
     registerMessage(MSGID_CONFIG_LOGGER_NO_NUMBER_OF_FILES,
                     "No file number limit has been defined for the " +
-                    "retention policy in the configuration entry %s.");
+                    "retention policy in the configuration entry %s");
     registerMessage(MSGID_CONFIG_LOGGER_NO_DISK_SPACE_USED,
                     "No disk space limit has been defined for the " +
-                    "retention policy in the configuration entry %s.");
+                    "retention policy in the configuration entry %s");
     registerMessage(MSGID_CONFIG_LOGGER_NO_FREE_DISK_SPACE,
                     "No disk space limit has been defined for the " +
-                    "retention policy in the configuration entry %s.");
+                    "retention policy in the configuration entry %s");
     registerMessage(MSGID_CONFIG_LOGGER_INVALID_JAVA5_POLICY,
                     "The free disk space based retention policy " +
                     "in the configuration entry %s. is not allowed for " +
-                    "the Directory Server when running on pre Java 6 VMs.");
+                    "the Directory Server when running on pre Java 6 VMs");
 
     registerMessage(MSGID_CONFIG_PLUGIN_CANNOT_GET_CONFIG_BASE,
                     "An error occurred while trying to retrieve " +
                     "configuration entry " + DN_PLUGIN_BASE + " in order to " +
-                    "initialize the Directory Server plugins:  %s.");
+                    "initialize the Directory Server plugins:  %s");
     registerMessage(MSGID_CONFIG_PLUGIN_BASE_DOES_NOT_EXIST,
                     "The entry " + DN_PLUGIN_BASE +  " does not appear to " +
                     "exist in the Directory Server configuration.  This is a " +
-                    "required entry.");
+                    "required entry");
     registerMessage(MSGID_CONFIG_PLUGIN_ENTRY_DOES_NOT_HAVE_PLUGIN_CONFIG,
                     "Configuration entry %s exists below the plugin " +
                     "configuration root of " + DN_PLUGIN_BASE + " but does " +
                     "not have objectclass " + OC_BACKEND + " that is " +
                     "required for a Directory Server plugin.  This " +
-                    "configuration entry will be ignored.");
+                    "configuration entry will be ignored");
     registerMessage(MSGID_CONFIG_PLUGIN_ERROR_INTERACTING_WITH_PLUGIN_ENTRY,
                     "An unexpected error occurred while interacting with " +
-                    "backend configuration entry %s:  %s.");
+                    "backend configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_PLUGIN_ATTR_DESCRIPTION_ENABLED,
                     "Indicates whether this plugin should be enabled for " +
                     "use in the Directory Server.  This may be altered while " +
                     "the Directory Server is online, and will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_CONFIG_PLUGIN_NO_ENABLED_ATTR,
                     "Plugin configuration entry %s does not contain " +
                     "attribute " + ATTR_PLUGIN_ENABLED + ", which is used " +
                     "to indicate whether the plugin should be enabled or " +
                     "disabled.  Without this attribute, it will default to " +
-                    "being disabled.");
+                    "being disabled");
     registerMessage(MSGID_CONFIG_PLUGIN_DISABLED,
                     "The plugin defined in configuration entry %s is " +
-                    "marked as disabled and therefore will not be used.");
+                    "marked as disabled and therefore will not be used");
     registerMessage(MSGID_CONFIG_PLUGIN_UNABLE_TO_DETERMINE_ENABLED_STATE,
                     "An unexpected error occurred while attempting to " +
                     "determine whether the plugin associated with " +
                     "configuration entry %s should be enabled or disabled:  " +
-                    "%s.  It will be disabled.");
+                    "%s.  It will be disabled");
     registerMessage(MSGID_CONFIG_PLUGIN_ATTR_DESCRIPTION_PLUGIN_TYPE,
                     "Specifies the plugin type(s) for this plugin, which "+
                     "control the times when this plugin will be invoked " +
@@ -8071,181 +8071,181 @@
                     "the plugin is loaded and initialized, so changes to " +
                     "this attribute will not take effect until the plugin " +
                     "is disabled and re-enabled, or until the server is " +
-                    "restarted.");
+                    "restarted");
     registerMessage(MSGID_CONFIG_PLUGIN_NO_PLUGIN_TYPES,
                     "Plugin configuration entry %s does not contain " +
                     "attribute " + ATTR_PLUGIN_TYPE + ", which is used to " +
                     "specify the name(s) of the plugin type(s) for the " +
                     "plugin.  This is a required attribute, so this plugin " +
-                    "will be disabled.");
+                    "will be disabled");
     registerMessage(MSGID_CONFIG_PLUGIN_INVALID_PLUGIN_TYPE,
                     "Plugin configuration entry %s has an invalid value %s " +
                     "for attribute " + ATTR_PLUGIN_TYPE + " that does not " +
-                    "name a valid plugin type.  This plugin will be disabled.");
+                    "name a valid plugin type.  This plugin will be disabled");
     registerMessage(MSGID_CONFIG_PLUGIN_CANNOT_GET_PLUGIN_TYPES,
                     "An unexpected error occurred while trying to " +
                     "determine the set of plugin types for the plugin " +
                     "defined in configuration entry %s:  %s.  This plugin " +
-                    "will be disabled.");
+                    "will be disabled");
     registerMessage(MSGID_CONFIG_PLUGIN_ATTR_DESCRIPTION_CLASS,
                     "Specifies the fully-qualified name of the Java class " +
                     "that should provide the core logic for this plugin " +
                     "implementation.  Changes to this configuration " +
                     "attribute will not take effect until the plugin is "+
-                    "disabled and re-enabled or the server is restarted.");
+                    "disabled and re-enabled or the server is restarted");
     registerMessage(MSGID_CONFIG_PLUGIN_NO_CLASS_ATTR,
                     "Plugin configuration entry %s does not contain " +
                     "attribute " + ATTR_PLUGIN_CLASS + ", which is used to " +
                     "specify the name of the class used to provide the " +
                     "plugin implementation.  The plugin associated with " +
-                    "this configuration entry will be disabled.");
+                    "this configuration entry will be disabled");
     registerMessage(MSGID_CONFIG_PLUGIN_CANNOT_GET_CLASS,
                     "An unexpected error occurred while trying to determine " +
                     "the name of the Java class that contains the " +
                     "implementation for plugin %s:  %s.  This plugin will " +
-                    "be disabled.");
+                    "be disabled");
     registerMessage(MSGID_CONFIG_PLUGIN_CANNOT_INSTANTIATE,
                     "The Directory Server was unable to load class %s and " +
                     "use it to create a plugin instance as defined in " +
                     "configuration entry %s.  The error that occurred was:  " +
-                    "%s.  This plugin will be disabled.");
+                    "%s.  This plugin will be disabled");
     registerMessage(MSGID_CONFIG_PLUGIN_CANNOT_INITIALIZE,
                     "An error occurred while attempting to initialize an " +
                     "instance of class %s as a Directory Server plugin using " +
                     "the information in configuration entry %s:  %s.  This " +
-                    "plugin will be disabled.");
+                    "plugin will be disabled");
     registerMessage(MSGID_CONFIG_PLUGIN_CLASS_ACTION_REQUIRED,
                     "The requested change in the plugin class name from %s " +
                     "to %s in configuration entry %s cannot be dynamically " +
                     "applied.  This change will not take effect until the " +
                     "plugin is disabled and re-enabled or the Directory " +
-                    "Server is restarted.");
+                    "Server is restarted");
 
 
     registerMessage(MSGID_CONFIG_EXTOP_INVALID_CLASS,
                     "Class %s specified in configuration entry %s does not " +
                     "contain a valid extended operation handler " +
-                    "implementation:  %s.");
+                    "implementation:  %s");
     registerMessage(MSGID_CONFIG_EXTOP_INITIALIZATION_FAILED,
                     "An error occurred while trying to initialize an " +
                     "instance of class %s as an extended operation handler " +
-                    "as defined in configuration entry %s:  %s.");
+                    "as defined in configuration entry %s:  %s");
 
 
     registerMessage(MSGID_CONFIG_SASL_CANNOT_GET_BASE,
                     "An error occurred while attempting to retrieve the SASL " +
                     "mechanism handler base entry " +
                     DN_SASL_CONFIG_BASE +
-                    " from the Directory Server configuration:  %s.");
+                    " from the Directory Server configuration:  %s");
     registerMessage(MSGID_CONFIG_SASL_BASE_DOES_NOT_EXIST,
                     "The SASL mechanism configuration base " +
                     DN_SASL_CONFIG_BASE + " does not exist in the " +
                     "Directory Server configuration.  This entry must be " +
-                    "present for the server to function properly.");
+                    "present for the server to function properly");
     registerMessage(MSGID_CONFIG_SASL_ENTRY_UNACCEPTABLE,
                     "Configuration entry %s does not contain a valid SASL " +
                     "mechanism handler configuration:  %s.  It will be " +
-                    "ignored.");
+                    "ignored");
     registerMessage(MSGID_CONFIG_SASL_CANNOT_CREATE_HANDLER,
                     "An error occurred while attempting to create a " +
                     "Directory Server SASL mechanism handler from the " +
-                    "information in configuration entry %s:  %s.");
+                    "information in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_SASL_INVALID_OBJECTCLASS,
                     "Configuration entry %s does not contain the " +
                     OC_SASL_MECHANISM_HANDLER + " objectclass, which is " +
-                    "required for SASL mechanism handler definitions.");
+                    "required for SASL mechanism handler definitions");
     registerMessage(MSGID_CONFIG_SASL_DESCRIPTION_CLASS_NAME,
                     "The fully-qualified name of the Java class that defines " +
                     "the Directory Server SASL mechanism handler.  If this " +
                     "is altered while the associated handler is enabled, " +
                     "then that handler must be disabled and re-enabled for " +
-                    "the change to take effect.");
+                    "the change to take effect");
     registerMessage(MSGID_CONFIG_SASL_NO_CLASS_NAME,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " + ATTR_SASL_CLASS +
                     " which specifies the fully-qualified class name for " +
-                    "the associated SASL mechanism handler.");
+                    "the associated SASL mechanism handler");
     registerMessage(MSGID_CONFIG_SASL_INVALID_CLASS_NAME,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_SASL_CLASS + ":  %s.");
+                    "attribute " + ATTR_SASL_CLASS + ":  %s");
     registerMessage(MSGID_CONFIG_SASL_INVALID_CLASS,
                     "Class %s specified in configuration entry %s does not " +
                     "contain a valid SASL mechanism handler implementation:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_CONFIG_SASL_DESCRIPTION_ENABLED,
                     "Indicates whether this Directory Server SASL mechanism " +
                     "handler should be enabled.  Changes to this attribute " +
-                    "will take effect immediately.");
+                    "will take effect immediately");
     registerMessage(MSGID_CONFIG_SASL_NO_ENABLED_ATTR,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " + ATTR_SASL_ENABLED +
                     " which indicates whether the SASL mechanism handler " +
-                    "should be enabled for use in the Directory Server.");
+                    "should be enabled for use in the Directory Server");
     registerMessage(MSGID_CONFIG_SASL_INVALID_ENABLED_VALUE,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_SASL_ENABLED + ":  %s.");
+                    "attribute " + ATTR_SASL_ENABLED + ":  %s");
     registerMessage(MSGID_CONFIG_SASL_CLASS_ACTION_REQUIRED,
                     "The requested change in the SASL mechanism handler " +
                     "class name from %s to %s in configuration entry %s " +
                     "cannot be dynamically applied.  This change will not " +
                     "take effect until the handler is disabled and " +
-                    "re-enabled or the Directory Server is restarted.");
+                    "re-enabled or the Directory Server is restarted");
     registerMessage(MSGID_CONFIG_SASL_INITIALIZATION_FAILED,
                     "An error occurred while trying to initialize an " +
                     "instance of class %s as a SASL mechanism handler as " +
-                    "defined in configuration entry %s:  %s.");
+                    "defined in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_SASL_EXISTS,
                     "Unable to add a new SASL mechanism handler entry with " +
                     "DN %s because there is already a handler registered " +
-                    "with that DN.");
+                    "with that DN");
     registerMessage(MSGID_CONFIG_SASL_UNACCEPTABLE_CONFIG,
                     "The configuration for the SASL mechanism handler " +
                     "defined in configuration entry %s was not acceptable " +
                     "according to its internal validation.  However, no " +
                     "specific information is available regarding the " +
-                    "problem(s) with the entry.");
+                    "problem(s) with the entry");
     registerMessage(MSGID_CONFIG_LOGGER_INVALID_SUPPRESS_INT_OPERATION_VALUE,
         "Invalid value specified for attribute %s. " +
-        "Allowed values are true or false.");
+        "Allowed values are true or false");
     registerMessage(MSGID_CONFIG_LOGGER_SUPPRESS_INTERNAL_OPERATIONS,
                     "Indicates whether messages for internal operations " +
-                    "should be excluded from the access log file.");
+                    "should be excluded from the access log file");
 
 
     registerMessage(MSGID_CONFIG_KEYMANAGER_CANNOT_GET_BASE,
                     "An error occurred while attempting to retrieve the key " +
                     "manager provider base entry " +
                     DN_KEYMANAGER_PROVIDER_CONFIG_BASE +
-                    " from the Directory Server configuration:  %s.");
+                    " from the Directory Server configuration:  %s");
     registerMessage(MSGID_CONFIG_KEYMANAGER_BASE_DOES_NOT_EXIST,
                     "The key manager provider configuration base " +
                     DN_KEYMANAGER_PROVIDER_CONFIG_BASE + " does not exist in " +
                     "the Directory Server configuration.  This entry must be " +
-                    "present for the server to function properly.");
+                    "present for the server to function properly");
     registerMessage(MSGID_CONFIG_KEYMANAGER_ENTRY_UNACCEPTABLE,
                     "Configuration entry %s does not contain a valid key " +
                     "manager provider configuration:  %s.  It will be " +
-                    "ignored.");
+                    "ignored");
     registerMessage(MSGID_CONFIG_KEYMANAGER_CANNOT_CREATE_PROVIDER,
                     "An error occurred while attempting to create a " +
                     "Directory Server key manager provider from the " +
-                    "information in configuration entry %s:  %s.");
+                    "information in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_KEYMANAGER_INVALID_OBJECTCLASS,
                     "Configuration entry %s does not contain the " +
                     OC_KEY_MANAGER_PROVIDER + " objectclass, which is " +
-                    "required for key manager provider definitions.");
+                    "required for key manager provider definitions");
     registerMessage(MSGID_CONFIG_KEYMANAGER_NO_CLASS_NAME,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " + ATTR_KEYMANAGER_CLASS +
                     " which specifies the fully-qualified class name for " +
-                    "the associated key manager provider.");
+                    "the associated key manager provider");
     registerMessage(MSGID_CONFIG_KEYMANAGER_INVALID_CLASS_NAME,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_KEYMANAGER_CLASS + ":  %s.");
+                    "attribute " + ATTR_KEYMANAGER_CLASS + ":  %s");
     registerMessage(MSGID_CONFIG_KEYMANAGER_INVALID_CLASS,
                     "Class %s specified in configuration entry %s does not " +
                     "contain a valid key manager provider implementation:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_CONFIG_KEYMANAGER_DESCRIPTION_ENABLED,
                     "Indicates whether the Directory Server key manager " +
                     "provider should be enabled.  A key manager provider is " +
@@ -8253,77 +8253,77 @@
                     "key manager (e.g., communication over SSL).  Changes to " +
                     "this configuration attribute will take effect " +
                     "immediately, but will only impact future attempts to " +
-                    "access the key manager.");
+                    "access the key manager");
     registerMessage(MSGID_CONFIG_KEYMANAGER_NO_ENABLED_ATTR,
                     "Configuration entry \"%s\" does not contain a value for " +
                     "attribute " + ATTR_KEYMANAGER_ENABLED +
                     ", which indicates whether the key manager provider is " +
-                    "enabled for use in the server.");
+                    "enabled for use in the server");
     registerMessage(MSGID_CONFIG_KEYMANAGER_INVALID_ENABLED_VALUE,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_KEYMANAGER_ENABLED + ":  %s.");
+                    "attribute " + ATTR_KEYMANAGER_ENABLED + ":  %s");
     registerMessage(MSGID_CONFIG_KEYMANAGER_DESCRIPTION_CLASS,
                     "Specifies the fully-qualified name of the Java class " +
                     "that includes the key manager provider implementation.  " +
                     "Changes to this configuration attribute will not take " +
                     "effect until the key manager provider has been disabled " +
-                    "and then re-enabled, or until the server is restarted.");
+                    "and then re-enabled, or until the server is restarted");
     registerMessage(MSGID_CONFIG_KEYMANAGER_CLASS_ACTION_REQUIRED,
                     "The requested change in the key manager provider class " +
                     "name from %s to %s in configuration entry %s cannot be " +
                     "dynamically applied.  This change will not take effect " +
                     "until the provider is disabled and re-enabled or the " +
-                    "Directory Server is restarted.");
+                    "Directory Server is restarted");
     registerMessage(MSGID_CONFIG_KEYMANAGER_INITIALIZATION_FAILED,
                     "An error occurred while trying to initialize an " +
                     "instance of class %s as a key manager provider as " +
-                    "defined in configuration entry %s:  %s.");
+                    "defined in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_KEYMANAGER_EXISTS,
                     "Unable to add a new key manager provider entry with DN " +
                     "%s because there is already a provider registered with " +
-                    "that DN.");
+                    "that DN");
     registerMessage(MSGID_CONFIG_KEYMANAGER_UNACCEPTABLE_CONFIG,
                     "The configuration for the key manager provider defined " +
                     "in configuration entry %s was not acceptable according " +
                     "to its internal validation.  However, no specific " +
                     "information is available regarding the problem(s) with " +
-                    "the entry.");
+                    "the entry");
 
 
     registerMessage(MSGID_CONFIG_TRUSTMANAGER_CANNOT_GET_BASE,
                     "An error occurred while attempting to retrieve the " +
                     "trust manager provider base entry " +
                     DN_TRUSTMANAGER_PROVIDER_CONFIG_BASE +
-                    " from the Directory Server configuration:  %s.");
+                    " from the Directory Server configuration:  %s");
     registerMessage(MSGID_CONFIG_TRUSTMANAGER_BASE_DOES_NOT_EXIST,
                     "The trust manager provider configuration base " +
                     DN_TRUSTMANAGER_PROVIDER_CONFIG_BASE + " does not exist " +
                     "in the Directory Server configuration.  This entry must " +
-                    "be present for the server to function properly.");
+                    "be present for the server to function properly");
     registerMessage(MSGID_CONFIG_TRUSTMANAGER_ENTRY_UNACCEPTABLE,
                     "Configuration entry %s does not contain a valid trust " +
                     "manager provider configuration:  %s.  It will be " +
-                    "ignored.");
+                    "ignored");
     registerMessage(MSGID_CONFIG_TRUSTMANAGER_CANNOT_CREATE_PROVIDER,
                     "An error occurred while attempting to create a " +
                     "Directory Server trust manager provider from the " +
-                    "information in configuration entry %s:  %s.");
+                    "information in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_TRUSTMANAGER_INVALID_OBJECTCLASS,
                     "Configuration entry %s does not contain the " +
                     OC_TRUST_MANAGER_PROVIDER + " objectclass, which is " +
-                    "required for trust manager provider definitions.");
+                    "required for trust manager provider definitions");
     registerMessage(MSGID_CONFIG_TRUSTMANAGER_NO_CLASS_NAME,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " + ATTR_TRUSTMANAGER_CLASS +
                     " which specifies the fully-qualified class name for " +
-                    "the associated trust manager provider.");
+                    "the associated trust manager provider");
     registerMessage(MSGID_CONFIG_TRUSTMANAGER_INVALID_CLASS_NAME,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_TRUSTMANAGER_CLASS + ":  %s.");
+                    "attribute " + ATTR_TRUSTMANAGER_CLASS + ":  %s");
     registerMessage(MSGID_CONFIG_TRUSTMANAGER_INVALID_CLASS,
                     "Class %s specified in configuration entry %s does not " +
                     "contain a valid trust manager provider implementation:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_CONFIG_TRUSTMANAGER_DESCRIPTION_ENABLED,
                     "Indicates whether the Directory Server trust manager " +
                     "provider should be enabled.  A trust manager provider " +
@@ -8331,77 +8331,77 @@
                     "trust manager (e.g., communication over SSL).  Changes " +
                     "to this configuration attribute will take effect " +
                     "immediately, but will only impact future attempts to " +
-                    "access the trust manager.");
+                    "access the trust manager");
     registerMessage(MSGID_CONFIG_TRUSTMANAGER_NO_ENABLED_ATTR,
                     "Configuration entry \"%s\" does not contain a value for " +
                     "attribute " + ATTR_TRUSTMANAGER_ENABLED +
                     ", which indicates whether the trust manager provider is " +
-                    "enabled for use in the server.");
+                    "enabled for use in the server");
     registerMessage(MSGID_CONFIG_TRUSTMANAGER_INVALID_ENABLED_VALUE,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_TRUSTMANAGER_ENABLED + ":  %s.");
+                    "attribute " + ATTR_TRUSTMANAGER_ENABLED + ":  %s");
     registerMessage(MSGID_CONFIG_TRUSTMANAGER_DESCRIPTION_CLASS,
                     "Specifies the fully-qualified name of the Java class " +
                     "that includes the trust manager provider " +
                     "implementation.  Changes to this configuration " +
                     "attribute will not take effect until the trust manager " +
                     "provider has been disabled and then re-enabled, or " +
-                    "until the server is restarted.");
+                    "until the server is restarted");
     registerMessage(MSGID_CONFIG_TRUSTMANAGER_CLASS_ACTION_REQUIRED,
                     "The requested change in the trust manager provider " +
                     "class name from %s to %s in configuration entry %s " +
                     "cannot be dynamically applied.  This change will not " +
                     "take effect until the provider is disabled and " +
-                    "re-enabled or the Directory Server is restarted.");
+                    "re-enabled or the Directory Server is restarted");
     registerMessage(MSGID_CONFIG_TRUSTMANAGER_INITIALIZATION_FAILED,
                     "An error occurred while trying to initialize an " +
                     "instance of class %s as a trust manager provider as " +
-                    "defined in configuration entry %s:  %s.");
+                    "defined in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_TRUSTMANAGER_EXISTS,
                     "Unable to add a new trust manager provider entry with " +
                     "DN %s because there is already a provider registered " +
-                    "with that DN.");
+                    "with that DN");
     registerMessage(MSGID_CONFIG_TRUSTMANAGER_UNACCEPTABLE_CONFIG,
                     "The configuration for the trust manager provider " +
                     "defined in configuration entry %s was not acceptable " +
                     "according to its internal validation.  However, no " +
                     "specific information is available regarding the " +
-                    "problem(s) with the entry.");
+                    "problem(s) with the entry");
 
 
     registerMessage(MSGID_CONFIG_CERTMAPPER_CANNOT_GET_BASE,
                     "An error occurred while attempting to retrieve the " +
                     "certificate mapper base entry " +
                     DN_CERTMAPPER_CONFIG_BASE +
-                    " from the Directory Server configuration:  %s.");
+                    " from the Directory Server configuration:  %s");
     registerMessage(MSGID_CONFIG_CERTMAPPER_BASE_DOES_NOT_EXIST,
                     "The certificate mapper configuration base " +
                     DN_CERTMAPPER_CONFIG_BASE + " does not exist in the " +
                     "Directory Server configuration.  This entry must be " +
-                    "present for the server to function properly.");
+                    "present for the server to function properly");
     registerMessage(MSGID_CONFIG_CERTMAPPER_ENTRY_UNACCEPTABLE,
                     "Configuration entry %s does not contain a valid " +
                     "certificate mapper configuration:  %s.  It will be " +
-                    "ignored.");
+                    "ignored");
     registerMessage(MSGID_CONFIG_CERTMAPPER_CANNOT_CREATE_MAPPER,
                     "An error occurred while attempting to create a " +
                     "Directory Server certificate mapper from the " +
-                    "information in configuration entry %s:  %s.");
+                    "information in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_CERTMAPPER_INVALID_OBJECTCLASS,
                     "Configuration entry %s does not contain the " +
                     OC_CERTIFICATE_MAPPER + " objectclass, which is required " +
-                    "for certificate mapper definitions.");
+                    "for certificate mapper definitions");
     registerMessage(MSGID_CONFIG_CERTMAPPER_NO_CLASS_NAME,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " + ATTR_CERTMAPPER_CLASS +
                     " which specifies the fully-qualified class name for " +
-                    "the associated certificate mapper.");
+                    "the associated certificate mapper");
     registerMessage(MSGID_CONFIG_CERTMAPPER_INVALID_CLASS_NAME,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_CERTMAPPER_CLASS + ":  %s.");
+                    "attribute " + ATTR_CERTMAPPER_CLASS + ":  %s");
     registerMessage(MSGID_CONFIG_CERTMAPPER_INVALID_CLASS,
                     "Class %s specified in configuration entry %s does not " +
-                    "contain a valid certificate mapper implementation:  %s.");
+                    "contain a valid certificate mapper implementation:  %s");
     registerMessage(MSGID_CONFIG_CERTMAPPER_DESCRIPTION_ENABLED,
                     "Indicates whether the Directory Server certificate " +
                     "mapper should be enabled.  A certificate mapper is " +
@@ -8409,194 +8409,194 @@
                     "certificate chain and a user entry in the Directory " +
                     "Server for SASL EXTERNAL authentication and similar " +
                     "purposes.  Changes to this configuration attribute will " +
-                    "take effect immediately.");
+                    "take effect immediately");
     registerMessage(MSGID_CONFIG_CERTMAPPER_NO_ENABLED_ATTR,
                     "Configuration entry \"%s\" does not contain a value for " +
                     "attribute " + ATTR_CERTMAPPER_ENABLED +
                     ", which indicates whether the certificate mapper is " +
-                    "enabled for use in the server.");
+                    "enabled for use in the server");
     registerMessage(MSGID_CONFIG_CERTMAPPER_INVALID_ENABLED_VALUE,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_CERTMAPPER_ENABLED + ":  %s.");
+                    "attribute " + ATTR_CERTMAPPER_ENABLED + ":  %s");
     registerMessage(MSGID_CONFIG_CERTMAPPER_DESCRIPTION_CLASS,
                     "Specifies the fully-qualified name of the Java class " +
                     "that includes the certificate mapper implementation.  " +
                     "Changes to this configuration attribute will not take " +
                     "effect until the certificate mapper has been disabled " +
-                    "and then re-enabled, or until the server is restarted.");
+                    "and then re-enabled, or until the server is restarted");
     registerMessage(MSGID_CONFIG_CERTMAPPER_CLASS_ACTION_REQUIRED,
                     "The requested change in the certificate mapper class " +
                     "name from %s to %s in configuration entry %s cannot be " +
                     "dynamically applied.  This change will not take effect " +
                     "until the mapper is disabled and re-enabled or the " +
-                    "Directory Server is restarted.");
+                    "Directory Server is restarted");
     registerMessage(MSGID_CONFIG_CERTMAPPER_INITIALIZATION_FAILED,
                     "An error occurred while trying to initialize an " +
                     "instance of class %s as a certificate mapper as defined " +
-                    "in configuration entry %s:  %s.");
+                    "in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_CERTMAPPER_EXISTS,
                     "Unable to add a new certificate mapper entry with DN %s " +
                     "because there is already a mapper registered with that " +
-                    "DN.");
+                    "DN");
     registerMessage(MSGID_CONFIG_CERTMAPPER_UNACCEPTABLE_CONFIG,
                     "The configuration for the certificate mapper defined in " +
                     "configuration entry %s was not acceptable according to " +
                     "its internal validation.  However, no specific " +
                     "information is available regarding the problem(s) with " +
-                    "the entry.");
+                    "the entry");
 
 
     registerMessage(MSGID_CONFIG_PWSCHEME_CANNOT_GET_BASE,
                     "An error occurred while attempting to retrieve the " +
                     "password storage scheme base entry " +
                     DN_PWSCHEME_CONFIG_BASE + " from the Directory Server " +
-                    "configuration:  %s.");
+                    "configuration:  %s");
     registerMessage(MSGID_CONFIG_PWSCHEME_BASE_DOES_NOT_EXIST,
                     "The password storage scheme configuration base " +
                     DN_PWSCHEME_CONFIG_BASE + " does not exist in the " +
                     "Directory Server configuration.  This entry must be " +
-                    "present for the server to function properly.");
+                    "present for the server to function properly");
     registerMessage(MSGID_CONFIG_PWSCHEME_ENTRY_UNACCEPTABLE,
                     "Configuration entry %s does not contain a valid " +
                     "password storage scheme configuration:  %s.  It will be " +
-                    "ignored.");
+                    "ignored");
     registerMessage(MSGID_CONFIG_PWSCHEME_CANNOT_CREATE_SCHEME,
                     "An error occurred while attempting to create a " +
                     "Directory Server password storage scheme from the " +
-                    "information in configuration entry %s:  %s.");
+                    "information in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_PWSCHEME_INVALID_OBJECTCLASS,
                     "Configuration entry %s does not contain the " +
                     OC_PASSWORD_STORAGE_SCHEME + " objectclass, which is " +
-                    "required for password storage scheme definitions.");
+                    "required for password storage scheme definitions");
     registerMessage(MSGID_CONFIG_PWSCHEME_DESCRIPTION_CLASS_NAME,
                     "The fully-qualified name of the Java class that defines " +
                     "the Directory Server password storage scheme.  If this " +
                     "is altered while the associated scheme is enabled, " +
                     "then that storage scheme must be disabled and " +
-                    "re-enabled for the change to take effect.");
+                    "re-enabled for the change to take effect");
     registerMessage(MSGID_CONFIG_PWSCHEME_NO_CLASS_NAME,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " + ATTR_PWSCHEME_CLASS +
                     " which specifies the fully-qualified class name for " +
-                    "the associated password storage scheme.");
+                    "the associated password storage scheme");
     registerMessage(MSGID_CONFIG_PWSCHEME_INVALID_CLASS_NAME,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_PWSCHEME_CLASS + ":  %s.");
+                    "attribute " + ATTR_PWSCHEME_CLASS + ":  %s");
     registerMessage(MSGID_CONFIG_PWSCHEME_INVALID_CLASS,
                     "Class %s specified in configuration entry %s does not " +
                     "contain a valid password storage scheme " +
-                    "implementation:  %s.");
+                    "implementation:  %s");
     registerMessage(MSGID_CONFIG_PWSCHEME_DESCRIPTION_ENABLED,
                     "Indicates whether this Directory Server password " +
                     "storage scheme should be enabled.  Changes to this " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_CONFIG_PWSCHEME_NO_ENABLED_ATTR,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " + ATTR_PWSCHEME_ENABLED +
                     " which indicates whether the password storage scheme " +
-                    "should be enabled for use in the Directory Server.");
+                    "should be enabled for use in the Directory Server");
     registerMessage(MSGID_CONFIG_PWSCHEME_INVALID_ENABLED_VALUE,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_PWSCHEME_ENABLED + ":  %s.");
+                    "attribute " + ATTR_PWSCHEME_ENABLED + ":  %s");
     registerMessage(MSGID_CONFIG_PWSCHEME_CLASS_ACTION_REQUIRED,
                     "The requested change in the password storage scheme " +
                     "class name from %s to %s in configuration entry %s " +
                     "cannot be dynamically applied.  This change will not " +
                     "take effect until the storage scheme is disabled and " +
-                    "re-enabled or the Directory Server is restarted.");
+                    "re-enabled or the Directory Server is restarted");
     registerMessage(MSGID_CONFIG_PWSCHEME_INITIALIZATION_FAILED,
                     "An error occurred while trying to initialize an " +
                     "instance of class %s as a password storage scheme as " +
-                    "defined in configuration entry %s:  %s.");
+                    "defined in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_PWSCHEME_EXISTS,
                     "Unable to add a new password storage scheme entry with " +
                     "DN %s because there is already a storage scheme " +
-                    "registered with that DN.");
+                    "registered with that DN");
     registerMessage(MSGID_CONFIG_PWSCHEME_UNACCEPTABLE_CONFIG,
                     "The configuration for the password storage scheme " +
                     "defined in configuration entry %s was not acceptable " +
                     "according to its internal validation.  However, no " +
                     "specific information is available regarding the " +
-                    "problem(s) with the entry.");
+                    "problem(s) with the entry");
 
 
     registerMessage(MSGID_CONFIG_BACKUP_CANNOT_GET_MAC,
                     "An error occurred while attempting to obtain the %s MAC " +
-                    "provider to create the signed hash for the backup:  %s.");
+                    "provider to create the signed hash for the backup:  %s");
     registerMessage(MSGID_CONFIG_BACKUP_CANNOT_GET_DIGEST,
                     "An error occurred while attempting to obtain the %s " +
-                    "message digest to create the hash for the backup:  %s.");
+                    "message digest to create the hash for the backup:  %s");
     registerMessage(MSGID_CONFIG_BACKUP_CANNOT_CREATE_ARCHIVE_FILE,
                     "An error occurred while trying to create the config " +
-                    "archive file %s in directory %s:  %s.");
+                    "archive file %s in directory %s:  %s");
     registerMessage(MSGID_CONFIG_BACKUP_CANNOT_GET_CIPHER,
                     "An error occurred while attempting to obtain the %s " +
-                    "cipher to use to encrypt the backup:  %s.");
+                    "cipher to use to encrypt the backup:  %s");
     registerMessage(MSGID_CONFIG_BACKUP_ZIP_COMMENT,
                     "%s config backup %s");
     registerMessage(MSGID_CONFIG_BACKUP_CANNOT_DETERMINE_CONFIG_FILE_LOCATION,
                     "An error occurred while attempting to determine the " +
                     "path to the Directory Server configuration file so that " +
-                    "it could be archived:  %s.");
+                    "it could be archived:  %s");
     registerMessage(MSGID_CONFIG_BACKUP_CANNOT_BACKUP_CONFIG_FILE,
                     "An error occurred while attempting to back up " +
-                    "configuration file %s:  %s.");
+                    "configuration file %s:  %s");
     registerMessage(MSGID_CONFIG_BACKUP_CANNOT_BACKUP_ARCHIVED_CONFIGS,
                     "An error occurred while attempting to back up the " +
-                    "archived previous configurations from file %s:  %s.");
+                    "archived previous configurations from file %s:  %s");
     registerMessage(MSGID_CONFIG_BACKUP_CANNOT_CLOSE_ZIP_STREAM,
                     "An error occurred while trying to close the config " +
-                    "archive file %s in directory %s:  %s.");
+                    "archive file %s in directory %s:  %s");
     registerMessage(MSGID_CONFIG_BACKUP_CANNOT_UPDATE_BACKUP_DESCRIPTOR,
                     "An error occurred while attempting to update the backup " +
                     "descriptor file %s with information about the " +
-                    "configuration backup:  %s.");
+                    "configuration backup:  %s");
 
 
     registerMessage(MSGID_CONFIG_RESTORE_NO_SUCH_BACKUP,
                     "Unable to restore or verify configuration backup %s in " +
-                    "directory %s because no such backup exists.");
+                    "directory %s because no such backup exists");
     registerMessage(MSGID_CONFIG_RESTORE_NO_BACKUP_FILE,
                     "Unable to restore or verify configuration backup %s in " +
                     "directory %s because the archive filename could not be " +
-                    "determined.");
+                    "determined");
     registerMessage(MSGID_CONFIG_RESTORE_NO_SUCH_FILE,
                     "Unable to restore or verify configuration backup %s " +
-                    "because the specified archive file %s does not exist.");
+                    "because the specified archive file %s does not exist");
     registerMessage(MSGID_CONFIG_RESTORE_CANNOT_CHECK_FOR_ARCHIVE,
                     "Unable to restore or verify configuration backup %s " +
                     "because an error occurred while trying to determine " +
-                    "whether backup archive %s exists:  %s.");
+                    "whether backup archive %s exists:  %s");
     registerMessage(MSGID_CONFIG_RESTORE_UNKNOWN_DIGEST,
                     "Unable to restore or verify configuration backup %s " +
                     "because an unsigned hash of this backup is available " +
                     "but the server cannot determine the digest algorithm " +
-                    "used to generate this hash.");
+                    "used to generate this hash");
     registerMessage(MSGID_CONFIG_RESTORE_CANNOT_GET_DIGEST,
                     "Unable to restore or verify configuration backup %s " +
                     "because it has an unsigned hash that uses an unknown or " +
-                    "unsupported digest algorithm of %s.");
+                    "unsupported digest algorithm of %s");
     registerMessage(MSGID_CONFIG_RESTORE_UNKNOWN_MAC,
                     "Unable to restore or verify configuration backup %s " +
                     "because a signed hash of this backup is available but " +
                     "the server cannot determine the MAC algorithm used to " +
-                    "generate this hash.");
+                    "generate this hash");
     registerMessage(MSGID_CONFIG_RESTORE_CANNOT_GET_MAC,
                     "Unable to restore or verify configuration backup %s " +
                     "because it has a signed hash that uses an unknown or " +
-                    "unsupported MAC algorithm of %s.");
+                    "unsupported MAC algorithm of %s");
     registerMessage(MSGID_CONFIG_RESTORE_CANNOT_OPEN_BACKUP_FILE,
                     "Unable to restore or verify configuration backup %s " +
                     "because an error occurred while attempting to open the " +
-                    "backup archive file %s:  %s.");
+                    "backup archive file %s:  %s");
     registerMessage(MSGID_CONFIG_RESTORE_UNKNOWN_CIPHER,
                     "Unable to restore or verify configuration backup %s " +
                     "because it is encrypted but the server cannot determine " +
-                    "the cipher used to perform this encryption.");
+                    "the cipher used to perform this encryption");
     registerMessage(MSGID_CONFIG_RESTORE_CANNOT_GET_CIPHER,
                     "Unable to restore or verify configuration backup %s " +
                     "because it is encrypted using an unknown or unsupported " +
-                    "cipher of %s.");
+                    "cipher of %s");
     registerMessage(MSGID_CONFIG_RESTORE_CANNOT_BACKUP_EXISTING_CONFIG,
                     "Unable to restore configuration backup %s because an " +
                     "error occurred while attempting to temporarily back up " +
@@ -8606,530 +8606,530 @@
                     "backup from being properly restored.  However, the " +
                     "original configuration files that were in place before " +
                     "the start of the restore process have been preserved " +
-                    "and are now in their original location of %s.");
+                    "and are now in their original location of %s");
     registerMessage(MSGID_CONFIG_RESTORE_CANNOT_RESTORE_OLD_CONFIG,
                     "An error occurred that prevented the configuration " +
                     "backup from being properly restored.  The original " +
                     "configuration files that were in place before the start " +
                     "of the restore process have been preserved and are " +
-                    "contained in the %s directory.");
+                    "contained in the %s directory");
     registerMessage(MSGID_CONFIG_RESTORE_CANNOT_CREATE_CONFIG_DIRECTORY,
                     "Unable to restore configuration backup %s because an " +
                     "error occurred while attempting to create a new empty " +
                     "directory %s into which the files should be restored:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_CONFIG_RESTORE_OLD_CONFIG_SAVED,
                     "An error occurred that prevented the configuration " +
                     "backup from being properly restored.  The original " +
                     "configuration files that were in place before the start " +
                     "of the restore process have been preserved in the %s " +
-                    "directory.");
+                    "directory");
     registerMessage(MSGID_CONFIG_RESTORE_CANNOT_GET_ZIP_ENTRY,
                     "Unable to restore or verify configuration backup %s " +
                     "because an error occurred while trying to read the next " +
-                    "entry from the archive file %s:  %s.");
+                    "entry from the archive file %s:  %s");
     registerMessage(MSGID_CONFIG_RESTORE_CANNOT_CREATE_FILE,
                     "Unable to restore configuration backup %s because an " +
-                    "error occurred while trying to recreate file %s:  %s.");
+                    "error occurred while trying to recreate file %s:  %s");
     registerMessage(MSGID_CONFIG_RESTORE_CANNOT_PROCESS_ARCHIVE_FILE,
                     "Unable to restore or verify configuration backup %s " +
                     "because an error occurred while processing archived " +
-                    "file %s:  %s.");
+                    "file %s:  %s");
     registerMessage(MSGID_CONFIG_RESTORE_ERROR_ON_ZIP_STREAM_CLOSE,
                     "Unable to restore or verify configuration backup %s " +
                     "because an unexpected error occurred while trying to " +
-                    "close the archive file %s:  %s.");
+                    "close the archive file %s:  %s");
     registerMessage(MSGID_CONFIG_RESTORE_UNSIGNED_HASH_VALID,
                     "The message digest calculated from the backup archive " +
-                    "matches the digest stored with the backup information.");
+                    "matches the digest stored with the backup information");
     registerMessage(MSGID_CONFIG_RESTORE_UNSIGNED_HASH_INVALID,
                     "Unable to restore or verify configuration backup %s " +
                     "because the message digest calculated from the backup " +
                     "archive does not match the digest stored with the " +
-                    "backup information.");
+                    "backup information");
     registerMessage(MSGID_CONFIG_RESTORE_SIGNED_HASH_VALID,
                     "The signed digest calculated from the backup archive " +
                     "matches the signature stored with the backup " +
-                    "information.");
+                    "information");
     registerMessage(MSGID_CONFIG_RESTORE_SIGNED_HASH_INVALID,
                     "Unable to restore or verify configuration backup %s " +
                     "because the signed digest calculated from the backup " +
                     "archive does not match the signature stored with the " +
-                    "backup information.");
+                    "backup information");
     registerMessage(MSGID_CONFIG_RESTORE_VERIFY_SUCCESSFUL,
                     "All tests performed on configuration backup %s from " +
-                    "directory %s show that the archive appears to be valid.");
+                    "directory %s show that the archive appears to be valid");
     registerMessage(MSGID_CONFIG_RESTORE_SUCCESSFUL,
                     "Configuration backup %s was successfully restored from " +
-                    "the archive in directory %s.");
+                    "the archive in directory %s");
 
 
     registerMessage(MSGID_CONFIG_IDMAPPER_CANNOT_GET_BASE,
                     "An error occurred while attempting to retrieve the " +
                     "identity mapper base entry " + DN_IDMAPPER_CONFIG_BASE +
-                    " from the Directory Server configuration:  %s.");
+                    " from the Directory Server configuration:  %s");
     registerMessage(MSGID_CONFIG_IDMAPPER_BASE_DOES_NOT_EXIST,
                     "The identity mapper configuration base " +
                     DN_IDMAPPER_CONFIG_BASE + " does not exist in the " +
                     "Directory Server configuration.  This entry must be " +
-                    "present for the server to function properly.");
+                    "present for the server to function properly");
     registerMessage(MSGID_CONFIG_IDMAPPER_ENTRY_UNACCEPTABLE,
                     "Configuration entry %s does not contain a valid " +
-                    "identity mapper configuration:  %s.  It will be ignored.");
+                    "identity mapper configuration:  %s.  It will be ignored");
     registerMessage(MSGID_CONFIG_IDMAPPER_CANNOT_CREATE_MAPPER,
                     "An error occurred while attempting to create a " +
                     "Directory Server identity mapper from the information " +
-                    "in configuration entry %s:  %s.");
+                    "in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_IDMAPPER_NO_PROXY_MAPPER_DN,
                     "The Directory Server does not have any identity mapper " +
                     "configured for use in conjunction with proxied " +
                     "authorization V2 operations.  The Directory Server " +
                     "will not be able to process requests containing the " +
                     "proxied authorization control with a username-based " +
-                    "authorization ID.");
+                    "authorization ID");
     registerMessage(MSGID_CONFIG_IDMAPPER_INVALID_PROXY_MAPPER_DN,
                     "The configured proxied authorization identity mapper DN " +
                     "%s does not refer to an active identity mapper.  The " +
                     "Directory Server will not be able to process requests " +
                     "containing the proxied authorization control with a " +
-                    "username-based authorization ID.");
+                    "username-based authorization ID");
     registerMessage(MSGID_CONFIG_IDMAPPER_INVALID_OBJECTCLASS,
                     "Configuration entry %s does not contain the " +
                     OC_IDENTITY_MAPPER + " objectclass, which is " +
-                    "required for identity mapper definitions.");
+                    "required for identity mapper definitions");
     registerMessage(MSGID_CONFIG_IDMAPPER_DESCRIPTION_CLASS_NAME,
                     "The fully-qualified name of the Java class that defines " +
                     "a Directory Server identity mapper.  If this is altered " +
                     "while the associated identity mapper is enabled, then " +
                     "that mapper must be disabled and re-enabled for the " +
-                    "change to take effect.");
+                    "change to take effect");
     registerMessage(MSGID_CONFIG_IDMAPPER_NO_CLASS_NAME,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " + ATTR_IDMAPPER_CLASS +
                     " which specifies the fully-qualified class name for " +
-                    "the associated identity mapper.");
+                    "the associated identity mapper");
     registerMessage(MSGID_CONFIG_IDMAPPER_INVALID_CLASS_NAME,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_IDMAPPER_CLASS + ":  %s.");
+                    "attribute " + ATTR_IDMAPPER_CLASS + ":  %s");
     registerMessage(MSGID_CONFIG_IDMAPPER_INVALID_CLASS,
                     "Class %s specified in configuration entry %s does not " +
-                    "contain a valid identity mapper implementation:  %s.");
+                    "contain a valid identity mapper implementation:  %s");
     registerMessage(MSGID_CONFIG_IDMAPPER_DESCRIPTION_ENABLED,
                     "Indicates whether this Directory Server identity mapper " +
                     "should be enabled.  Changes to this attribute will take " +
-                    "effect immediately.");
+                    "effect immediately");
     registerMessage(MSGID_CONFIG_IDMAPPER_NO_ENABLED_ATTR,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " + ATTR_IDMAPPER_ENABLED +
                     " which indicates whether the identity mapper should be " +
-                    "enabled for use in the Directory Server.");
+                    "enabled for use in the Directory Server");
     registerMessage(MSGID_CONFIG_IDMAPPER_INVALID_ENABLED_VALUE,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_IDMAPPER_ENABLED + ":  %s.");
+                    "attribute " + ATTR_IDMAPPER_ENABLED + ":  %s");
     registerMessage(MSGID_CONFIG_IDMAPPER_CLASS_ACTION_REQUIRED,
                     "The requested change in the identity mapper class name " +
                     "from %s to %s in configuration entry %s cannot be " +
                     "dynamically applied.  This change will not take effect " +
                     "until the identity mapper is disabled and re-enabled or " +
-                    "the Directory Server is restarted.");
+                    "the Directory Server is restarted");
     registerMessage(MSGID_CONFIG_IDMAPPER_INITIALIZATION_FAILED,
                     "An error occurred while trying to initialize an " +
                     "instance of class %s as an identity mapper as defined " +
-                    "in configuration entry %s:  %s.");
+                    "in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_IDMAPPER_EXISTS,
                     "Unable to add a new identity mapper entry with DN %s " +
                     "because there is already an identity mapper registered " +
-                    "with that DN.");
+                    "with that DN");
     registerMessage(MSGID_CONFIG_IDMAPPER_UNACCEPTABLE_CONFIG,
                     "The configuration for the identity mapper defined in " +
                     "configuration entry %s was not acceptable according to " +
                     "its internal validation.  However, no specific " +
                     "information is available regarding the problem(s) with " +
-                    "the entry.");
+                    "the entry");
 
 
     registerMessage(MSGID_CONFIG_SYNCH_CANNOT_GET_CONFIG_BASE,
                     "An error occurred while attempting to retrieve the " +
                     "Directory Server synchronization provider configuration " +
                     "base entry " + DN_SYNCHRONIZATION_PROVIDER_BASE +
-                    ":  %s.");
+                    ":  %s");
     registerMessage(MSGID_CONFIG_SYNCH_BASE_DOES_NOT_EXIST,
                     "The Directory Server synchronization provider " +
                     "base entry " + DN_SYNCHRONIZATION_PROVIDER_BASE +
                     " does not exist.  This entry must be  present in the " +
-                    "Directory Server configuration.");
+                    "Directory Server configuration");
     registerMessage(MSGID_CONFIG_SYNCH_ENTRY_DOES_NOT_HAVE_PROVIDER_CONFIG,
                     "Configuration entry %s exists below the Directory " +
                     "Server synchronization provider root but does not " +
                     "contain attribute " + OC_SYNCHRONIZATION_PROVIDER +
                     " which must be present in all synchronization provider " +
-                    "configuration entries.");
+                    "configuration entries");
     registerMessage(MSGID_CONFIG_SYNCH_CANNOT_CHECK_FOR_PROVIDER_CONFIG_OC,
                     "An error occurred while attempting to determine whether " +
                     "configuration entry %s was a valid Directory Server " +
-                    "synchronization provider:  %s.");
+                    "synchronization provider:  %s");
     registerMessage(MSGID_CONFIG_SYNCH_DESCRIPTION_PROVIDER_ENABLED,
                     "Indicates whether the associated Directory Server " +
                     "synchronization provider is enabled and should be used " +
                     "by the server.  This attribute must be present in all " +
                     "synchronization provider entries and may not be changed " +
-                    "while the Directory Server is running.");
+                    "while the Directory Server is running");
     registerMessage(MSGID_CONFIG_SYNCH_PROVIDER_NO_ENABLED_ATTR,
                     "Synchronization provider configuration entry %s does " +
                     "not contain attribute " +
                     ATTR_SYNCHRONIZATION_PROVIDER_ENABLED +
                     " which indicates whether the synchronization provider " +
-                    "is enabled for use.");
+                    "is enabled for use");
     registerMessage(MSGID_CONFIG_SYNCH_PROVIDER_DISABLED,
                     "The Directory Server synchronization provider defined " +
                     "in configuration entry %s is disabled.  This " +
-                    "provider will not be used.");
+                    "provider will not be used");
     registerMessage(MSGID_CONFIG_SYNCH_UNABLE_TO_DETERMINE_ENABLED_STATE,
                     "An error occurred while attempting to determine whether " +
                     "the Directory Server synchronization provider defined " +
-                    "in configuration entry %s should be enabled:  %s.");
+                    "in configuration entry %s should be enabled:  %s");
     registerMessage(MSGID_CONFIG_SYNCH_DESCRIPTION_PROVIDER_CLASS,
                     "Specifies the fully-qualified name of the Java class " +
                     "that will provide the logic for the Directory Server " +
                     "synchronization provider.  This attribute must be " +
                     "present in all synchronization provider entries and may " +
-                    "not be changed while the Directory Server is running.");
+                    "not be changed while the Directory Server is running");
     registerMessage(MSGID_CONFIG_SYNCH_NO_CLASS_ATTR,
                     "Synchronization provider configuration entry %s does " +
                     "not contain attribute " +
                     ATTR_SYNCHRONIZATION_PROVIDER_CLASS +
                     " which specifies the name of the class that implements " +
-                    "the synchronization provider logic.");
+                    "the synchronization provider logic");
     registerMessage(MSGID_CONFIG_SYNCH_UNABLE_TO_DETERMINE_CLASS,
                     "An error occurred while attempting to determine the " +
                     "name of the class used to provide the Directory Server " +
                     "synchronization provider logic from configuration " +
-                    "entry %s:  %s.");
+                    "entry %s:  %s");
     registerMessage(MSGID_CONFIG_SYNCH_UNABLE_TO_LOAD_PROVIDER_CLASS,
                     "An error occurred while attempting to load class %s " +
                     "referenced in synchronization provider configuration " +
-                    "entry %s:  %s.");
+                    "entry %s:  %s");
     registerMessage(MSGID_CONFIG_SYNCH_UNABLE_TO_INSTANTIATE_PROVIDER,
                     "An error occurred while attempting to instantiate " +
                     "class %s referenced in synchronization provider " +
-                    "configuration entry %s:  %s.");
+                    "configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_SYNCH_ERROR_INITIALIZING_PROVIDER,
                     "An error occurred while attempting to initialize the " +
                     "Directory Server synchronization provider referenced " +
-                    "in configuration entry %s:  %s.");
+                    "in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_SYNCH_PROVIDER_HAS_BEEN_DISABLED,
                     "The synchronization provider defined in configuration " +
                     "entry %s is currently enabled but the configuration has " +
                     "changed so that it should be disabled.  This will not " +
-                    "take effect until the Directory Server is restarted.");
+                    "take effect until the Directory Server is restarted");
     registerMessage(MSGID_CONFIG_SYNCH_PROVIDER_CLASS_CHANGED,
                     "The Java class providing the logic for the " +
                     "synchronization provider defined in configuration entry " +
                     "%s has changed from %s to %s.  This will not take " +
-                    "effect until the Directory Server is restarted.");
+                    "effect until the Directory Server is restarted");
 
 
     registerMessage(MSGID_CONFIG_PWVALIDATOR_CANNOT_GET_BASE,
                     "An error occurred while attempting to retrieve the " +
                     "password validator base entry " +
                     DN_PWVALIDATOR_CONFIG_BASE + " from the Directory Server " +
-                    "configuration:  %s.");
+                    "configuration:  %s");
     registerMessage(MSGID_CONFIG_PWVALIDATOR_BASE_DOES_NOT_EXIST,
                     "The password validator configuration base " +
                     DN_PWVALIDATOR_CONFIG_BASE + " does not exist in the " +
                     "Directory Server configuration.  This entry must be " +
-                    "present for the server to function properly.");
+                    "present for the server to function properly");
     registerMessage(MSGID_CONFIG_PWVALIDATOR_ENTRY_UNACCEPTABLE,
                     "Configuration entry %s does not contain a valid " +
                     "password validator configuration:  %s.  It will be " +
-                    "ignored.");
+                    "ignored");
     registerMessage(MSGID_CONFIG_PWVALIDATOR_CANNOT_CREATE_VALIDATOR,
                     "An error occurred while attempting to create a " +
                     "Directory Server password validator from the " +
-                    "information in configuration entry %s:  %s.");
+                    "information in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_PWVALIDATOR_INVALID_OBJECTCLASS,
                     "Configuration entry %s does not contain the " +
                     OC_PASSWORD_VALIDATOR + " objectclass, which is required " +
-                    "for password validator definitions.");
+                    "for password validator definitions");
     registerMessage(MSGID_CONFIG_PWVALIDATOR_DESCRIPTION_CLASS_NAME,
                     "The fully-qualified name of the Java class that defines " +
                     "the Directory Server password validator.  If this is " +
                     "altered while the associated validator is enabled, then " +
                     "that validator must be disabled and re-enabled for the " +
-                    "change to take effect.");
+                    "change to take effect");
     registerMessage(MSGID_CONFIG_PWVALIDATOR_NO_CLASS_NAME,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " + ATTR_PWVALIDATOR_CLASS +
                     " which specifies the fully-qualified class name for " +
-                    "the associated password validator.");
+                    "the associated password validator");
     registerMessage(MSGID_CONFIG_PWVALIDATOR_INVALID_CLASS_NAME,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_PWVALIDATOR_CLASS + ":  %s.");
+                    "attribute " + ATTR_PWVALIDATOR_CLASS + ":  %s");
     registerMessage(MSGID_CONFIG_PWVALIDATOR_INVALID_CLASS,
                     "Class %s specified in configuration entry %s does not " +
-                    "contain a valid password validator implementation:  %s.");
+                    "contain a valid password validator implementation:  %s");
     registerMessage(MSGID_CONFIG_PWVALIDATOR_DESCRIPTION_ENABLED,
                     "Indicates whether this Directory Server password " +
                     "validator should be enabled.  Changes to this attribute " +
-                    "will take effect immediately.");
+                    "will take effect immediately");
     registerMessage(MSGID_CONFIG_PWVALIDATOR_NO_ENABLED_ATTR,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " + ATTR_PWVALIDATOR_ENABLED +
                     " which indicates whether the password validator should " +
-                    "be enabled for use in the Directory Server.");
+                    "be enabled for use in the Directory Server");
     registerMessage(MSGID_CONFIG_PWVALIDATOR_INVALID_ENABLED_VALUE,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_PWVALIDATOR_ENABLED + ":  %s.");
+                    "attribute " + ATTR_PWVALIDATOR_ENABLED + ":  %s");
     registerMessage(MSGID_CONFIG_PWVALIDATOR_CLASS_ACTION_REQUIRED,
                     "The requested change in the password validator class " +
                     "name from %s to %s in configuration entry %s cannot be " +
                     "dynamically applied.  This change will not take effect " +
                     "until the validator is disabled and re-enabled or the " +
-                    "Directory Server is restarted.");
+                    "Directory Server is restarted");
     registerMessage(MSGID_CONFIG_PWVALIDATOR_INITIALIZATION_FAILED,
                     "An error occurred while trying to initialize an " +
                     "instance of class %s as a password validator as defined " +
-                    "in configuration entry %s:  %s.");
+                    "in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_PWVALIDATOR_EXISTS,
                     "Unable to add a new password validator entry with DN %s " +
                     "because there is already a validator registered with " +
-                    "that DN.");
+                    "that DN");
     registerMessage(MSGID_CONFIG_PWVALIDATOR_UNACCEPTABLE_CONFIG,
                     "The configuration for the password validator defined in " +
                     "configuration entry %s was not acceptable according to " +
                     "its internal validation.  However, no specific " +
                     "information is available regarding the problem(s) with " +
-                    "the entry.");
+                    "the entry");
 
 
     registerMessage(MSGID_CONFIG_PWGENERATOR_CANNOT_GET_BASE,
                     "An error occurred while attempting to retrieve the " +
                     "password generator base entry " +
                     DN_PWGENERATOR_CONFIG_BASE + " from the Directory Server " +
-                    "configuration:  %s.");
+                    "configuration:  %s");
     registerMessage(MSGID_CONFIG_PWGENERATOR_BASE_DOES_NOT_EXIST,
                     "The password generator configuration base " +
                     DN_PWGENERATOR_CONFIG_BASE + " does not exist in the " +
                     "Directory Server configuration.  This entry must be " +
-                    "present for the server to function properly.");
+                    "present for the server to function properly");
     registerMessage(MSGID_CONFIG_PWGENERATOR_ENTRY_UNACCEPTABLE,
                     "Configuration entry %s does not contain a valid " +
                     "password generator configuration:  %s.  It will be " +
-                    "ignored.");
+                    "ignored");
     registerMessage(MSGID_CONFIG_PWGENERATOR_CANNOT_CREATE_GENERATOR,
                     "An error occurred while attempting to create a " +
                     "Directory Server password generator from the " +
-                    "information in configuration entry %s:  %s.");
+                    "information in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_PWGENERATOR_INVALID_OBJECTCLASS,
                     "Configuration entry %s does not contain the " +
                     OC_PASSWORD_GENERATOR + " objectclass, which is required " +
-                    "for password generator definitions.");
+                    "for password generator definitions");
     registerMessage(MSGID_CONFIG_PWGENERATOR_DESCRIPTION_CLASS_NAME,
                     "The fully-qualified name of the Java class that defines " +
                     "the Directory Server password generator.  If this is " +
                     "altered while the associated generator is enabled, then " +
                     "that generator must be disabled and re-enabled for the " +
-                    "change to take effect.");
+                    "change to take effect");
     registerMessage(MSGID_CONFIG_PWGENERATOR_NO_CLASS_NAME,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " + ATTR_PWGENERATOR_CLASS +
                     " which specifies the fully-qualified class name for " +
-                    "the associated password generator.");
+                    "the associated password generator");
     registerMessage(MSGID_CONFIG_PWGENERATOR_INVALID_CLASS_NAME,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_PWGENERATOR_CLASS + ":  %s.");
+                    "attribute " + ATTR_PWGENERATOR_CLASS + ":  %s");
     registerMessage(MSGID_CONFIG_PWGENERATOR_INVALID_CLASS,
                     "Class %s specified in configuration entry %s does not " +
-                    "contain a valid password generator implementation:  %s.");
+                    "contain a valid password generator implementation:  %s");
     registerMessage(MSGID_CONFIG_PWGENERATOR_DESCRIPTION_ENABLED,
                     "Indicates whether this Directory Server password " +
                     "generator should be enabled.  Changes to this attribute " +
-                    "will take effect immediately.");
+                    "will take effect immediately");
     registerMessage(MSGID_CONFIG_PWGENERATOR_NO_ENABLED_ATTR,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " + ATTR_PWGENERATOR_ENABLED +
                     " which indicates whether the password generator should " +
-                    "be enabled for use in the Directory Server.");
+                    "be enabled for use in the Directory Server");
     registerMessage(MSGID_CONFIG_PWGENERATOR_INVALID_ENABLED_VALUE,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_PWGENERATOR_ENABLED + ":  %s.");
+                    "attribute " + ATTR_PWGENERATOR_ENABLED + ":  %s");
     registerMessage(MSGID_CONFIG_PWGENERATOR_CLASS_ACTION_REQUIRED,
                     "The requested change in the password generator class " +
                     "name from %s to %s in configuration entry %s cannot be " +
                     "dynamically applied.  This change will not take effect " +
                     "until the generator is disabled and re-enabled or the " +
-                    "Directory Server is restarted.");
+                    "Directory Server is restarted");
     registerMessage(MSGID_CONFIG_PWGENERATOR_INITIALIZATION_FAILED,
                     "An error occurred while trying to initialize an " +
                     "instance of class %s as a password generator as defined " +
-                    "in configuration entry %s:  %s.");
+                    "in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_PWGENERATOR_EXISTS,
                     "Unable to add a new password generator entry with DN %s " +
                     "because there is already a generator registered with " +
-                    "that DN.");
+                    "that DN");
     registerMessage(MSGID_CONFIG_PWGENERATOR_UNACCEPTABLE_CONFIG,
                     "The configuration for the password generator defined in " +
                     "configuration entry %s was not acceptable according to " +
                     "its internal validation.  However, no specific " +
                     "information is available regarding the problem(s) with " +
-                    "the entry.");
+                    "the entry");
 
 
     registerMessage(MSGID_CONFIG_PWPOLICY_CANNOT_GET_BASE,
                     "An error occurred while attempting to retrieve the " +
                     "password policy base entry " + DN_PWPOLICY_CONFIG_BASE +
-                    " from the Directory Server configuration:  %s.");
+                    " from the Directory Server configuration:  %s");
     registerMessage(MSGID_CONFIG_PWPOLICY_BASE_DOES_NOT_EXIST,
                     "The password policy configuration base " +
                     DN_PWPOLICY_CONFIG_BASE + " does not exist in the " +
                     "Directory Server configuration.  This entry must be " +
-                    "present for the server to function properly.");
+                    "present for the server to function properly");
     registerMessage(MSGID_CONFIG_PWPOLICY_NO_POLICIES,
                     "No password policies have been defined below the " +
                     DN_PWPOLICY_CONFIG_BASE + " entry in the Directory " +
                     "Server configuration.  At least one password policy " +
-                    "configuration must be defined.");
+                    "configuration must be defined");
     registerMessage(MSGID_CONFIG_PWPOLICY_NO_DEFAULT_POLICY,
                     "No default password policy is configured for the " +
                     "Directory Server.  The default password policy must be " +
                     "specified by the " + ATTR_DEFAULT_PWPOLICY_DN +
-                    " attribute in the " + DN_CONFIG_ROOT + " entry.");
+                    " attribute in the " + DN_CONFIG_ROOT + " entry");
     registerMessage(MSGID_CONFIG_PWPOLICY_INVALID_POLICY_CONFIG,
                     "The password policy defined in configuration entry %s " +
-                    "is invalid:  %s.");
+                    "is invalid:  %s");
     registerMessage(MSGID_CONFIG_PWPOLICY_MISSING_DEFAULT_POLICY,
                     "The Directory Server default password policy is " +
                     "defined as %s, but that entry does not exist or is not " +
                     "below the password policy configuration base " +
-                    DN_PWPOLICY_CONFIG_BASE + ".");
+                    DN_PWPOLICY_CONFIG_BASE + "");
     registerMessage(MSGID_CONFIG_PWPOLICY_CANNOT_DELETE_DEFAULT_POLICY,
                     "The specified entry %s is currently defined as the " +
                     "configuration entry for the default password policy.  " +
                     "The default password policy configuration entry may not " +
-                    "be removed.");
+                    "be removed");
     registerMessage(MSGID_CONFIG_PWPOLICY_REMOVED_POLICY,
                     "Password policy entry %s has been removed from the " +
                     "Directory Server configuration.  Any user entries that " +
                     "explicitly reference this password policy will no " +
-                    "longer be allowed to authenticate.");
+                    "longer be allowed to authenticate");
 
     registerMessage(MSGID_CONFIG_AUTHZ_CANNOT_GET_ENTRY,
         "An error occurred while attempting to retrieve the "
             + "Directory Server access control configuration entry "
-            + DN_AUTHZ_HANDLER_CONFIG + ":  %s.");
+            + DN_AUTHZ_HANDLER_CONFIG + ":  %s");
 
     registerMessage(MSGID_CONFIG_AUTHZ_ENTRY_DOES_NOT_EXIST,
         "The Directory Server access control configuration entry "
             + DN_AUTHZ_HANDLER_CONFIG
             + " does not exist.  This entry must be present in the "
-            + "Directory Server configuration.");
+            + "Directory Server configuration");
 
     registerMessage(MSGID_CONFIG_AUTHZ_ENTRY_DOES_NOT_HAVE_OBJECT_CLASS,
         "The Directory Server access control configuration entry "
             + DN_AUTHZ_HANDLER_CONFIG
             + " does not have the correct object class.  This entry must"
             + " have the object class " + OC_AUTHZ_HANDLER_CONFIG
-            + " in order to be valid.");
+            + " in order to be valid");
 
     registerMessage(MSGID_CONFIG_AUTHZ_DESCRIPTION_ENABLED,
         "Indicates whether access control is enabled and should be used "
-            + "by the server.  This attribute is mandatory.");
+            + "by the server.  This attribute is mandatory");
 
     registerMessage(MSGID_CONFIG_AUTHZ_NO_ENABLED_ATTR,
         "The access control configuration entry %s does "
             + "not contain attribute " + ATTR_AUTHZ_HANDLER_ENABLED
             + " which indicates whether the access control "
-            + "is enabled for use.");
+            + "is enabled for use");
 
     registerMessage(MSGID_CONFIG_AUTHZ_DISABLED,
-        "Access control has been disabled.");
+        "Access control has been disabled");
 
     registerMessage(MSGID_CONFIG_AUTHZ_ENABLED,
         "Access control has been enabled and will use the %s "
-            + "implementation.");
+            + "implementation");
 
     registerMessage(MSGID_CONFIG_AUTHZ_UNABLE_TO_DETERMINE_ENABLED_STATE,
         "An error occurred while attempting to determine whether "
             + "the Directory Server access control as defined "
-            + "in configuration entry %s should be enabled:  %s.");
+            + "in configuration entry %s should be enabled:  %s");
 
     registerMessage(MSGID_CONFIG_AUTHZ_DESCRIPTION_CLASS,
         "Specifies the fully-qualified name of the Java class "
             + "that will provide the access control implementation for "
-            + "the Directory Server. This attribute is mandatory.");
+            + "the Directory Server. This attribute is mandatory");
 
     registerMessage(MSGID_CONFIG_AUTHZ_NO_CLASS_ATTR,
         "The access control configuration entry %s does "
             + "not contain attribute "
             + ATTR_AUTHZ_HANDLER_CLASS
             + " which specifies the name of the Java class providing"
-            + " the access control implementation for the Directory Server.");
+            + " the access control implementation for the Directory Server");
 
     registerMessage(MSGID_CONFIG_AUTHZ_UNABLE_TO_DETERMINE_CLASS,
         "An error occurred while attempting to determine the "
             + "name of the class used to provide the Directory Server "
             + "access control implementation from configuration "
-            + "entry %s:  %s.");
+            + "entry %s:  %s");
 
     registerMessage(MSGID_CONFIG_AUTHZ_UNABLE_TO_LOAD_CLASS,
         "An error occurred while attempting to load class %s "
             + "referenced in the access control configuration "
-            + "entry %s:  %s.");
+            + "entry %s:  %s");
 
     registerMessage(MSGID_CONFIG_AUTHZ_BAD_CLASS,
         "The access control implementation class %s "
             + "referenced in the access control configuration "
-            + "entry %s does not implement the %s interface:  %s.");
+            + "entry %s does not implement the %s interface:  %s");
 
     registerMessage(MSGID_CONFIG_AUTHZ_UNABLE_TO_INSTANTIATE_HANDLER,
         "An error occurred while attempting to instantiate "
             + "class %s referenced in the access control configuration "
-            + "entry %s:  %s.");
+            + "entry %s:  %s");
 
     registerMessage(MSGID_CONFIG_AUTHZ_ERROR_INITIALIZING_HANDLER,
         "An error occurred while attempting to initialize the "
             + "Directory Server access control implementation referenced "
-            + "in configuration entry %s:  %s.");
+            + "in configuration entry %s:  %s");
 
 
     registerMessage(MSGID_CONFIG_ROOTDN_CANNOT_GET_BASE,
                     "An error occurred while attempting to retrieve the " +
                     "root DN base entry " + DN_ROOT_DN_CONFIG_BASE +
-                    " from the Directory Server configuration:  %s.");
+                    " from the Directory Server configuration:  %s");
     registerMessage(MSGID_CONFIG_ROOTDN_BASE_DOES_NOT_EXIST,
                     "The password policy configuration base " +
                     DN_ROOT_DN_CONFIG_BASE + " does not exist in the " +
                     "Directory Server configuration.  This entry must be " +
-                    "present for the server to function properly.");
+                    "present for the server to function properly");
     registerMessage(MSGID_CONFIG_ROOTDN_DESCRIPTION_ROOT_PRIVILEGE,
                     "Specifies the set of privileges that should " +
                     "automatically be assigned to root users when they " +
-                    "authenticate to the server.");
+                    "authenticate to the server");
     registerMessage(MSGID_CONFIG_ROOTDN_UNRECOGNIZED_PRIVILEGE,
                     "The set of default root privileges contained in " +
                     "configuration attribute %s of entry %s contains an " +
-                    "unrecognized privilege %s.");
+                    "unrecognized privilege %s");
     registerMessage(MSGID_CONFIG_ROOTDN_ERROR_DETERMINING_ROOT_PRIVILEGES,
                     "An error occurred while attempting to determine the " +
                     "set of privileges that root users should be granted by " +
-                    "default:  %s.");
+                    "default:  %s");
     registerMessage(MSGID_CONFIG_ROOTDN_UPDATED_PRIVILEGES,
                     "The set of privileges that will automatically be " +
                     "assigned to root users has been updated.  This new " +
                     "privilege set will not apply to any existing " +
                     "connection already authenticated as a root user, but " +
-                    "will used for any subsequent root user authentications.");
+                    "will used for any subsequent root user authentications");
     registerMessage(MSGID_CONFIG_ROOTDN_ENTRY_UNACCEPTABLE,
                     "Configuration entry %s does not contain a valid root DN " +
-                    "configuration:  %s.  It will be ignored.");
+                    "configuration:  %s.  It will be ignored");
     registerMessage(MSGID_CONFIG_ROOTDN_CANNOT_CREATE,
                     "An error occurred while attempting to create a " +
                     "Directory Server root DN from the information in " +
-                    "configuration entry %s:  %s.");
+                    "configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_ROOTDN_INVALID_OBJECTCLASS,
                     "Configuration entry %s does not contain the " +
                     OC_ROOT_DN + " objectclass, which is required for " +
-                    "Directory Server root DN definitions.");
+                    "Directory Server root DN definitions");
     registerMessage(MSGID_CONFIG_ROOTDN_DESCRIPTION_ALTERNATE_BIND_DN,
                     "Specifies one or more alternate bind DNs that may be " +
                     "used to authenticate as the associated root DN, in " +
@@ -9138,102 +9138,102 @@
                     "DNs of any other entries in the directory, nor can they " +
                     "conflict with other alternate bind DNs configured for " +
                     "other root DNs.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_CONFIG_ROOTDN_CONFLICTING_MAPPING,
                     "Unable to register \"%s\" as an alternate bind DN for " +
                     "user \"%s\" because it is already registered as an " +
-                    "alternate bind DN for root user \"%s\".");
+                    "alternate bind DN for root user \"%s\"");
     registerMessage(MSGID_CONFIG_ROOTDN_CANNOT_PARSE_ALTERNATE_BIND_DNS,
                     "An error occurred while trying to parse the set of " +
-                    "alternate bind DNs for root user %s:  %s.");
+                    "alternate bind DNs for root user %s:  %s");
     registerMessage(MSGID_CONFIG_ROOTDN_CANNOT_REGISTER_ALTERNATE_BIND_DN,
                     "An error occurred while trying to register\"%s\" as an " +
-                    "alternate bind DN for root user \"%s\":  %s.");
+                    "alternate bind DN for root user \"%s\":  %s");
     registerMessage(MSGID_CONFIG_ROOTDN_EXISTS,
                     "Unable to add root DN entry %s because another root " +
-                    "user is already registered with that DN.");
+                    "user is already registered with that DN");
 
 
     registerMessage(MSGID_CONFIG_ACCTNOTHANDLER_CANNOT_GET_BASE,
                     "An error occurred while attempting to retrieve the " +
                     "account status notification handler base entry " +
                     DN_ACCT_NOTIFICATION_HANDLER_CONFIG_BASE +
-                    " from the Directory Server configuration:  %s.");
+                    " from the Directory Server configuration:  %s");
     registerMessage(MSGID_CONFIG_ACCTNOTHANDLER_BASE_DOES_NOT_EXIST,
                     "The account status notification handler configuration " +
                     "base " + DN_ACCT_NOTIFICATION_HANDLER_CONFIG_BASE +
                     " does not exist in the Directory Server configuration.  " +
                     "This entry must be present for the server to function " +
-                    "properly.");
+                    "properly");
     registerMessage(MSGID_CONFIG_ACCTNOTHANDLER_ENTRY_UNACCEPTABLE,
                     "Configuration entry %s does not contain a valid " +
                     "account status notification handler configuration:  " +
-                    "%s.  It will be ignored.");
+                    "%s.  It will be ignored");
     registerMessage(MSGID_CONFIG_ACCTNOTHANDLER_CANNOT_CREATE_HANDLER,
                     "An error occurred while attempting to create a " +
                     "Directory Server account status notification handler " +
-                    "from the information in configuration entry %s:  %s.");
+                    "from the information in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_ACCTNOTHANDLER_INVALID_OBJECTCLASS,
                     "Configuration entry %s does not contain the " +
                     OC_ACCT_NOTIFICATION_HANDLER + " objectclass, which is " +
                     "required for account status notification handler " +
-                    "definitions.");
+                    "definitions");
     registerMessage(MSGID_CONFIG_ACCTNOTHANDLER_DESCRIPTION_CLASS_NAME,
                     "The fully-qualified name of the Java class that defines " +
                     "the Directory Server account status notification " +
                     "handler.  If this is altered while the associated " +
                     "notification handler is enabled, then that handler must " +
                     "be disabled and re-enabled for the change to take " +
-                    "effect.");
+                    "effect");
     registerMessage(MSGID_CONFIG_ACCTNOTHANDLER_NO_CLASS_NAME,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " +
                     ATTR_ACCT_NOTIFICATION_HANDLER_CLASS +
                     " which specifies the fully-qualified class name for " +
-                    "the associated account status notification handler.");
+                    "the associated account status notification handler");
     registerMessage(MSGID_CONFIG_ACCTNOTHANDLER_INVALID_CLASS_NAME,
                     "Configuration entry %s has an invalid value for " +
                     "attribute " + ATTR_ACCT_NOTIFICATION_HANDLER_CLASS +
-                    ":  %s.");
+                    ":  %s");
     registerMessage(MSGID_CONFIG_ACCTNOTHANDLER_INVALID_CLASS,
                     "Class %s specified in configuration entry %s does not " +
                     "contain a valid account status notification handler " +
-                    "implementation:  %s.");
+                    "implementation:  %s");
     registerMessage(MSGID_CONFIG_ACCTNOTHANDLER_DESCRIPTION_ENABLED,
                     "Indicates whether this Directory Server account status " +
                     "notification handler should be enabled.  Changes to " +
-                    "this attribute will take effect immediately.");
+                    "this attribute will take effect immediately");
     registerMessage(MSGID_CONFIG_ACCTNOTHANDLER_NO_ENABLED_ATTR,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " +
                     ATTR_ACCT_NOTIFICATION_HANDLER_ENABLED +
                     " which indicates whether the account status " +
                     "notification handler should be enabled for use in the " +
-                    "Directory Server.");
+                    "Directory Server");
     registerMessage(MSGID_CONFIG_ACCTNOTHANDLER_INVALID_ENABLED_VALUE,
                     "Configuration entry %s has an invalid value for " +
                     "attribute " + ATTR_ACCT_NOTIFICATION_HANDLER_ENABLED +
-                    ":  %s.");
+                    ":  %s");
     registerMessage(MSGID_CONFIG_ACCTNOTHANDLER_CLASS_ACTION_REQUIRED,
                     "The requested change in the account status notification " +
                     "handler class name from %s to %s in configuration entry " +
                     "%s cannot be dynamically applied.  This change will not " +
                     "take effect until the notification handler is disabled " +
-                    "and re-enabled or the Directory Server is restarted.");
+                    "and re-enabled or the Directory Server is restarted");
     registerMessage(MSGID_CONFIG_ACCTNOTHANDLER_INITIALIZATION_FAILED,
                     "An error occurred while trying to initialize an " +
                     "instance of class %s as an account status notification " +
-                    "handler as defined in configuration entry %s:  %s.");
+                    "handler as defined in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_ACCTNOTHANDLER_EXISTS,
                     "Unable to add a new account status notification handler " +
                     "entry with DN %s because there is already a " +
-                    "notification handler registered with that DN.");
+                    "notification handler registered with that DN");
     registerMessage(MSGID_CONFIG_ACCTNOTHANDLER_UNACCEPTABLE_CONFIG,
                     "The configuration for the account status notification " +
                     "handler defined in configuration entry %s was not " +
                     "acceptable according to its internal validation.  " +
                     "However, no specific information is available regarding " +
-                    "the problem(s) with the entry.");
+                    "the problem(s) with the entry");
     registerMessage(MSGID_CONFIG_CORE_DESCRIPTION_LOOKTHROUGH_LIMIT,
                     "Specifies the default maximum number of candidate " +
                     "entries checked for matches when processing a search " +
@@ -9241,13 +9241,13 @@
                     "by including the " + OP_ATTR_USER_LOOKTHROUGH_LIMIT +
                     " operational attribute in the user's entry.  Changes to " +
                     "this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_CONFIG_CORE_INVALID_LOOKTHROUGH_LIMIT,
                     "Configuration entry %s has an invalid value for " +
                     "configuration attribute " + ATTR_LOOKTHROUGH_LIMIT +
                     " (It should be a positive integer value specifying " +
                     "the lookthrough limit to use, or a value of 0 or -1 to " +
-                    "indicate that no limit should be enforced):  %s.");
+                    "indicate that no limit should be enforced):  %s");
     registerMessage(MSGID_CONFIG_DESCRIPTION_BACKEND_MODE,
                     "The permissions used for the directory containing the " +
                     "backend database files");
@@ -9259,83 +9259,83 @@
     registerMessage(MSGID_CONFIG_BACKEND_INSANE_MODE,
                    "Unable to set the requested file permissions to the " +
                    "backend database directory. The requested permissions " +
-                   "will result in an inaccessable database.");
+                   "will result in an inaccessable database");
 
 
     registerMessage(MSGID_CONFIG_GROUP_CANNOT_GET_BASE,
                     "An error occurred while attempting to retrieve the " +
                     "group implementation base entry " +
                     DN_GROUP_IMPLEMENTATION_CONFIG_BASE +
-                    " from the Directory Server configuration:  %s.");
+                    " from the Directory Server configuration:  %s");
     registerMessage(MSGID_CONFIG_GROUP_BASE_DOES_NOT_EXIST,
                     "The group implementation configuration base " +
                     DN_GROUP_IMPLEMENTATION_CONFIG_BASE + " does not exist " +
                     "in the Directory Server configuration.  This entry must " +
-                    "be present for the server to function properly.");
+                    "be present for the server to function properly");
     registerMessage(MSGID_CONFIG_GROUP_ENTRY_UNACCEPTABLE,
                     "Configuration entry %s does not contain a valid " +
                     "group implementation configuration:  %s.  It will be " +
-                    "ignored.");
+                    "ignored");
     registerMessage(MSGID_CONFIG_GROUP_CANNOT_CREATE_IMPLEMENTATION,
                     "An error occurred while attempting to create a " +
                     "Directory Server group implementation from the " +
-                    "information in configuration entry %s:  %s.");
+                    "information in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_GROUP_INVALID_OBJECTCLASS,
                     "Configuration entry %s does not contain the " +
                     OC_GROUP_IMPLEMENTATION + " objectclass, which is " +
-                    "required for group implementation definitions.");
+                    "required for group implementation definitions");
     registerMessage(MSGID_CONFIG_GROUP_DESCRIPTION_CLASS_NAME,
                     "The fully-qualified name of the Java class that defines " +
                     "the Directory Server group implementation.  If this is " +
                     "while the associated implementation is enabled, then " +
                     "that group implementation must be disabled and " +
-                    "re-enabled for the change to take effect.");
+                    "re-enabled for the change to take effect");
     registerMessage(MSGID_CONFIG_GROUP_NO_CLASS_NAME,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " +
                     ATTR_GROUP_IMPLEMENTATION_CLASS +
                     " which specifies the fully-qualified class name for " +
-                    "the associated group implementation.");
+                    "the associated group implementation");
     registerMessage(MSGID_CONFIG_GROUP_INVALID_CLASS_NAME,
                     "Configuration entry %s has an invalid value for " +
-                    "attribute " + ATTR_GROUP_IMPLEMENTATION_CLASS + ":  %s.");
+                    "attribute " + ATTR_GROUP_IMPLEMENTATION_CLASS + ":  %s");
     registerMessage(MSGID_CONFIG_GROUP_INVALID_CLASS,
                     "Class %s specified in configuration entry %s does not " +
-                    "contain a valid group implementation:  %s.");
+                    "contain a valid group implementation:  %s");
     registerMessage(MSGID_CONFIG_GROUP_DESCRIPTION_ENABLED,
                     "Indicates whether this Directory Server group " +
                     "implementation should be enabled.  Changes to this " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_CONFIG_GROUP_NO_ENABLED_ATTR,
                     "Configuration entry %s does not contain a valid value " +
                     "for configuration attribute " +
                     ATTR_GROUP_IMPLEMENTATION_ENABLED +
                     " which indicates whether the group implementation " +
-                    "should be enabled for use in the Directory Server.");
+                    "should be enabled for use in the Directory Server");
     registerMessage(MSGID_CONFIG_GROUP_INVALID_ENABLED_VALUE,
                     "Configuration entry %s has an invalid value for " +
                     "attribute " + ATTR_GROUP_IMPLEMENTATION_ENABLED +
-                    ":  %s.");
+                    ":  %s");
     registerMessage(MSGID_CONFIG_GROUP_CLASS_ACTION_REQUIRED,
                     "The requested change in the group implementation class " +
                     "name from %s to %s in configuration entry %s cannot be " +
                     "dynamically applied.  This change will not take effect " +
                     "until the group implementation is disabled and " +
-                    "re-enabled or the Directory Server is restarted.");
+                    "re-enabled or the Directory Server is restarted");
     registerMessage(MSGID_CONFIG_GROUP_INITIALIZATION_FAILED,
                     "An error occurred while trying to initialize an " +
                     "instance of class %s as a group implementation as " +
-                    "in configuration entry %s:  %s.");
+                    "in configuration entry %s:  %s");
     registerMessage(MSGID_CONFIG_GROUP_EXISTS,
                     "Unable to add a new group implementation entry with DN " +
                     "%s because there is already a group implementation " +
-                    "registered with that DN.");
+                    "registered with that DN");
     registerMessage(MSGID_CONFIG_GROUP_UNACCEPTABLE_CONFIG,
                     "The configuration for the group implementation defined " +
                     "in configuration entry %s was not acceptable according " +
                     "to its internal validation.  However, no specific " +
                     "information is available regarding the problem(s) with " +
-                    "the entry.");
+                    "the entry");
 
 
     registerMessage(
@@ -9345,7 +9345,7 @@
                     "to \"true\", then unauthenticated clients will only be "+
                     "allowed to send bind and StartTLS requests. Changes to "+
                     "this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_CONFIG_CORE_REJECT_UNAUTHENTICATED_REQUESTS_INVALID,
                     "Configuration entry %s has an invalid value for" +
                     "configuration attribute " +
@@ -9354,34 +9354,34 @@
 
 
     registerMessage(MSGID_CONFIG_CHANGE_NO_RESULT,
-                    "%s.%s returned a result of null for entry %s.");
+                    "%s.%s returned a result of null for entry %s");
     registerMessage(MSGID_CONFIG_CHANGE_RESULT_ERROR,
                     "%s.%s failed for entry %s:  result code=%s, admin " +
-                    "action required=%b, messages=\"%s\".");
+                    "action required=%b, messages=\"%s\"");
     registerMessage(MSGID_CONFIG_CHANGE_RESULT_ACTION_REQUIRED,
                     "%s.%s indicated that administrative action is required " +
-                    "for entry %s:  messages=\"%s\".");
+                    "for entry %s:  messages=\"%s\"");
     registerMessage(MSGID_CONFIG_CHANGE_RESULT_MESSAGES,
                     "%s.%s succeeded but generated the following messages " +
-                    "for entry %s:  %s.");
+                    "for entry %s:  %s");
 
 
     registerMessage(MSGID_CONFIG_VATTR_INVALID_SEARCH_FILTER,
                     "Unable to parse value \"%s\" from config entry \"%s\" " +
-                    "as a valid search filter:  %s.");
+                    "as a valid search filter:  %s");
     registerMessage(MSGID_CONFIG_VATTR_SV_TYPE_WITH_MV_PROVIDER,
                     "The virtual attribute configuration in entry \"%s\" is " +
                     "not valid because attribute type %s is single-valued " +
-                    "but provider %s may generate multiple values.");
+                    "but provider %s may generate multiple values");
     registerMessage(MSGID_CONFIG_VATTR_SV_TYPE_WITH_MERGE_VALUES,
                     "The virtual attribute configuration in entry \"%s\" is " +
                     "not valid because attribute type %s is single-valued " +
                     "but the conflict behavior is configured to merge real " +
-                    "and virtual values.");
+                    "and virtual values");
     registerMessage(MSGID_CONFIG_VATTR_INITIALIZATION_FAILED,
                     "An error occurred while trying to load an instance " +
                     "of class %s referenced in configuration entry %s as a " +
-                    "virtual attribute provider:  %s.");
+                    "virtual attribute provider:  %s");
   }
 }
 
diff --git a/opends/src/server/org/opends/server/messages/CoreMessages.java b/opends/src/server/org/opends/server/messages/CoreMessages.java
index 5102b7e..fac6e6f 100644
--- a/opends/src/server/org/opends/server/messages/CoreMessages.java
+++ b/opends/src/server/org/opends/server/messages/CoreMessages.java
@@ -6037,11 +6037,11 @@
   public static void registerMessages()
   {
     registerMessage(MSGID_CANNOT_CANCEL_ABANDON,
-                    "Abandon requests cannot be canceled.");
+                    "Abandon requests cannot be canceled");
     registerMessage(MSGID_CANNOT_CANCEL_BIND,
-                    "Bind requests cannot be canceled.");
+                    "Bind requests cannot be canceled");
     registerMessage(MSGID_CANNOT_CANCEL_UNBIND,
-                    "Unbind requests cannot be canceled.");
+                    "Unbind requests cannot be canceled");
 
 
     registerMessage(MSGID_DISCONNECT_DUE_TO_UNBIND, "Client Unbind");
@@ -6206,16 +6206,16 @@
     registerMessage(MSGID_UNKNOWN_ATTRIBUTE_USAGE,
                     "Unable to determine the attribute usage type for " +
                     "attribute %s.  The server will assume that it is " +
-                    "user-defined.");
+                    "user-defined");
     registerMessage(MSGID_ATTR_TYPE_NORMALIZE_NO_MR,
                     "Unable to normalize value %s for attribute type %s " +
                     "because no equality matching rule is defined for that " +
-                    "attribute.");
+                    "attribute");
 
 
     registerMessage(MSGID_CANCELED_BY_SHUTDOWN,
                     "Processing on this operation has been canceled because " +
-                    "the Directory Server is shutting down.");
+                    "the Directory Server is shutting down");
     registerMessage(MSGID_UNCAUGHT_WORKER_THREAD_EXCEPTION,
                     "%s encountered an uncaught exception while processing " +
                     "operation %s:  %s");
@@ -6223,89 +6223,89 @@
                     "%s is unexpectedly exiting when the Directory Server " +
                     "is not in the process of shutting down.  This likely " +
                     "indicates that the thread encountered an unexpected " +
-                    "error.");
+                    "error");
     registerMessage(MSGID_CANNOT_CREATE_WORKER_THREAD,
                     "An unexpected error occurred while trying to create a " +
                     "worker thread:  %s");
     registerMessage(MSGID_OP_REJECTED_BY_SHUTDOWN,
                     "The request to process this operation has been rejected " +
                     "because the Directory Server has already started its " +
-                    "shutdown process.");
+                    "shutdown process");
     registerMessage(MSGID_OP_REJECTED_BY_QUEUE_FULL,
                     "The request to process this operation has been rejected " +
                     "because the work queue has already reached its maximum " +
-                    "capacity of %d pending operations.");
+                    "capacity of %d pending operations");
     registerMessage(MSGID_WORKER_INTERRUPTED_WITHOUT_SHUTDOWN,
                     "%s was interrupted while waiting for new work:  %s.  " +
                     "This should not happen, but the thread will resume " +
                     "waiting for new work so there should be no adverse " +
-                    "effects.");
+                    "effects");
     registerMessage(MSGID_WORKER_WAITING_UNCAUGHT_EXCEPTION,
                     "An unexpected exception was caught while %s was waiting " +
                     "for new work:  %s.  This should not happen, but the " +
                     "thread will resume waiting for new work so there should " +
-                    "be no adverse effects.");
+                    "be no adverse effects");
     registerMessage(MSGID_QUEUE_UNABLE_TO_CANCEL,
                     "The work queue caught an exception while trying to " +
                     "cancel pending operation %s when the Directory Server " +
-                    "was shutting down:  %s.");
+                    "was shutting down:  %s");
     registerMessage(MSGID_QUEUE_UNABLE_TO_NOTIFY_THREAD,
                     "The work queue caught an exception while trying to " +
                     "notify %s that the Directory Server was shutting " +
-                    "down:  %s.");
+                    "down:  %s");
     registerMessage(MSGID_WORKER_STOPPED_BY_REDUCED_THREADNUMBER,
                     "%s has been stopped because the total number of worker " +
-                    "threads in the Directory Server was reduced.");
+                    "threads in the Directory Server was reduced");
 
 
     registerMessage(MSGID_CANNOT_BOOTSTRAP_WHILE_RUNNING,
                     "The Directory Server is currently running.  The " +
                     "configuration may not be bootstrapped while the server " +
-                    "is online.");
+                    "is online");
     registerMessage(MSGID_DIRECTORY_BOOTSTRAPPING,
                     "The Directory Server is beginning the configuration " +
-                    "bootstrapping process.");
+                    "bootstrapping process");
     registerMessage(MSGID_DIRECTORY_BOOTSTRAPPED,
                     "The Directory Server has completed the configuration " +
-                    "bootstrapping process.");
+                    "bootstrapping process");
     registerMessage(MSGID_CANNOT_LOAD_CONFIG_HANDLER_CLASS,
                     "Unable to load class %s to serve as the Directory " +
-                    "Server configuration handler:  %s.");
+                    "Server configuration handler:  %s");
     registerMessage(MSGID_CANNOT_INSTANTIATE_CONFIG_HANDLER,
                     "Unable to create an instance of class %s to serve as " +
-                    "the Directory Server configuration handler: %s.");
+                    "the Directory Server configuration handler: %s");
     registerMessage(MSGID_CANNOT_INITIALIZE_CONFIG_HANDLER,
                     "An error occurred while trying to initialize the " +
                     "configuration handler %s using configuration file %s:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_CANNOT_START_BEFORE_BOOTSTRAP,
                     "The Directory Server may not be started before the " +
-                    "configuration has been bootstrapped.");
+                    "configuration has been bootstrapped");
     registerMessage(MSGID_CANNOT_START_WHILE_RUNNING,
                     "The Directory Server may not be started while it is " +
                     "already running.   Please stop the running instance " +
-                    "before attempting to start it again.");
+                    "before attempting to start it again");
     registerMessage(MSGID_CANNOT_ACQUIRE_EXCLUSIVE_SERVER_LOCK,
                     "The Directory Server could not acquire an exclusive " +
                     "lock on file %s:  %s.  This generally means that " +
-                    "another instance of this server is already running.");
+                    "another instance of this server is already running");
     registerMessage(MSGID_CANNOT_BOOTSTRAP_MATCHING_RULE,
                     "An error occurred while attempting to bootstrap the " +
-                    "matching rule defined in class %s:  %s.");
+                    "matching rule defined in class %s:  %s");
     registerMessage(MSGID_CANNOT_BOOTSTRAP_SYNTAX,
                     "An error occurred while attempting to bootstrap the " +
-                    "attribute syntax defined in class %s:  %s.");
-    registerMessage(MSGID_DIRECTORY_SERVER_STARTING, "%s starting up.");
+                    "attribute syntax defined in class %s:  %s");
+    registerMessage(MSGID_DIRECTORY_SERVER_STARTING, "%s starting up");
     registerMessage(MSGID_DIRECTORY_SERVER_STARTED,
-                    "The Directory Server has started successfully.");
+                    "The Directory Server has started successfully");
     registerMessage(MSGID_CANNOT_CREATE_MBEAN_SERVER,
                     "An error occurred while attempting to create the JMX " +
                     "MBean server that will be used for monitoring, " +
                     "notification, and configuration interaction within the " +
-                    "Directory Server:  %s.");
+                    "Directory Server:  %s");
     registerMessage(MSGID_SENT_ALERT_NOTIFICATION,
                     "The Directory Server has sent an alert notification " +
-                    "generated by class %s (alert type %s, alert ID %s):  %s.");
+                    "generated by class %s (alert type %s, alert ID %s):  %s");
     registerMessage(MSGID_UNCAUGHT_THREAD_EXCEPTION,
                     "An uncaught exception during processing for thread %s " +
                     "has caused it to terminate abnormally.  The stack trace " +
@@ -6313,313 +6313,313 @@
     registerMessage(MSGID_SERVER_SHUTDOWN,
                     "The Directory Server has started the shutdown process.  " +
                     "The shutdown was initiated by an instance of class %s " +
-                    "and the reason provided for the shutdown was %s.");
+                    "and the reason provided for the shutdown was %s");
     registerMessage(MSGID_SHUTDOWN_CANNOT_RELEASE_SHARED_BACKEND_LOCK,
                     "An error occurred while attempting to release a shared " +
                     "lock for backend %s:  %s.  This lock should be " +
                     "automatically cleaned when the Directory Server process " +
-                    "exits, so no additional action should be necessary.");
+                    "exits, so no additional action should be necessary");
     registerMessage(MSGID_CANNOT_RELEASE_EXCLUSIVE_SERVER_LOCK,
                     "An error occurred while attempting to release the " +
                     "exclusive server lock held on file %s:  %s.  This lock " +
                     "should be automatically cleaned when the Directory " +
                     "Server process exits, so no additional action should be " +
-                    "necessary.");
+                    "necessary");
     registerMessage(MSGID_SHUTDOWN_DUE_TO_SHUTDOWN_HOOK,
                     "The Directory Server shutdown hook detected that the " +
                     "JVM is shutting down.  This generally indicates that " +
                     "JVM received an external request to stop (e.g., through " +
-                    "a kill signal).");
+                    "a kill signal)");
     registerMessage(MSGID_SERVER_STOPPED,
-                    "The Directory Server is now stopped.");
+                    "The Directory Server is now stopped");
     registerMessage(MSGID_CANNOT_CREATE_WORK_QUEUE,
                     "An error occurred while trying to create the Directory " +
                     "Server work queue:  %s.  This is an unrecoverable error " +
-                    "and the startup process will not be able to continue.");
+                    "and the startup process will not be able to continue");
     registerMessage(MSGID_CANNOT_REGISTER_DUPLICATE_ALTERNATE_ROOT_BIND_DN,
                     "The alternate root bind DN \"%s\" is already registered " +
                     "with the Directory Server for actual root entry DN " +
-                    "\"%s\".");
+                    "\"%s\"");
     registerMessage(MSGID_CANNOT_REGISTER_DUPLICATE_SUFFIX,
                     "The suffix \"%s\" is already registered with the " +
-                    "Directory Server with a backend of type %s.");
+                    "Directory Server with a backend of type %s");
     registerMessage(MSGID_CANNOT_REGISTER_DUPLICATE_SUBSUFFIX,
                     "The suffix \"%s\" is already registered with the " +
                     "Directory Server as a sub-suffix of the backend for " +
-                    "suffix \"%s\".");
+                    "suffix \"%s\"");
     registerMessage(MSGID_CANNOT_REGISTER_PRIVATE_SUFFIX_BELOW_USER_PARENT,
                     "The private suffix \"%s\" is below a non-private suffix " +
                     "defined with a base DN of \"%s\".  A private sub-suffix " +
-                    "may not exist below a non-private suffix.");
+                    "may not exist below a non-private suffix");
     registerMessage(MSGID_CANNOT_GET_ROOT_DSE_CONFIG_ENTRY,
                     "An error occurred while trying to retrieve the root " +
                     "DSE configuration entry (" + DN_ROOT_DSE_CONFIG +
-                    ") from the Directory Server configuration:  %s.");
+                    ") from the Directory Server configuration:  %s");
     registerMessage(MSGID_STARTUP_PLUGIN_ERROR,
                     "A fatal error occurred when executing one of the " +
                     "Directory Server startup plugins:  %s (error ID %d).  " +
-                    "The Directory Server startup process has been aborted.");
+                    "The Directory Server startup process has been aborted");
 
 
     registerMessage(MSGID_ENTRY_SCHEMA_UNKNOWN_OC,
                     "Entry %s violates the Directory Server schema " +
                     "configuration because it contains an unknown " +
-                    "objectclass %s.");
+                    "objectclass %s");
     registerMessage(MSGID_ENTRY_SCHEMA_MISSING_REQUIRED_ATTR_FOR_OC,
                     "Entry %s violates the Directory Server schema " +
                     "configuration because it is missing attribute %s " +
-                    "which is required by objectclass %s.");
+                    "which is required by objectclass %s");
     registerMessage(MSGID_ENTRY_SCHEMA_DISALLOWED_USER_ATTR_FOR_OC,
                     "Entry %s violates the Directory Server schema " +
                     "configuration because it includes attribute %s which is " +
                     "not allowed by any of the objectclasses defined in that " +
-                    "entry.");
+                    "entry");
     registerMessage(MSGID_ENTRY_SCHEMA_ATTR_NO_VALUES,
                     "Entry %s violates the Directory Server schema " +
                     "configuration because it includes attribute %s without " +
-                    "any values.");
+                    "any values");
     registerMessage(MSGID_ENTRY_SCHEMA_ATTR_SINGLE_VALUED,
                     "Entry %s violates the Directory Server schema " +
                     "configuration because it includes multiple values for " +
                     "attribute %s, which is defined as a single-valued " +
-                    "attribute.");
+                    "attribute");
     registerMessage(MSGID_ENTRY_SCHEMA_MULTIPLE_STRUCTURAL_CLASSES,
                     "Entry %s violates the Directory Server schema " +
                     "configuration because it includes multiple conflicting " +
                     "structural objectclasses %s and %s.  Only a single " +
-                    "structural objectclass is allowed in an entry.");
+                    "structural objectclass is allowed in an entry");
     registerMessage(MSGID_ENTRY_SCHEMA_NO_STRUCTURAL_CLASS,
                     "Entry %s violates the Directory Server schema " +
                     "configuration because it does not include a structural " +
                     "objectclass.  All entries must contain a structural " +
-                    "objectclass.");
+                    "objectclass");
     registerMessage(MSGID_ENTRY_SCHEMA_RDN_MISSING_REQUIRED_ATTR,
                     "Entry %s violates the Directory Server schema " +
                     "configuration because its RDN does not contain " +
-                    "attribute %s that is required by name form %s.");
+                    "attribute %s that is required by name form %s");
     registerMessage(MSGID_ENTRY_SCHEMA_RDN_DISALLOWED_ATTR,
                     "Entry %s violates the Directory Server schema " +
                     "configuration because its RDN contains attribute %s " +
-                    "that is not allowed by name form %s.");
+                    "that is not allowed by name form %s");
     registerMessage(MSGID_ENTRY_SCHEMA_MISSING_REQUIRED_ATTR_FOR_DCR,
                     "Entry %s violates the Directory Server schema " +
                     "configuration because it is missing attribute %s " +
-                    "which is required by DIT content rule %s.");
+                    "which is required by DIT content rule %s");
     registerMessage(MSGID_ENTRY_SCHEMA_PROHIBITED_ATTR_FOR_DCR,
                     "Entry %s violates the Directory Server schema " +
                     "configuration because it contains attribute %s which is " +
-                    "prohibited by DIT content rule %s.");
+                    "prohibited by DIT content rule %s");
     registerMessage(MSGID_ENTRY_SCHEMA_DISALLOWED_USER_ATTR_FOR_DCR,
                     "Entry %s violates the Directory Server schema " +
                     "configuration because it includes attribute %s which is " +
                     "not in the list of allowed or required attributes for " +
-                    "DIT content rule %s.");
+                    "DIT content rule %s");
     registerMessage(MSGID_ENTRY_SCHEMA_DISALLOWED_AUXILIARY_CLASS,
                     "Entry %s violates the Directory Server schema " +
                     "configuration because it includes auxiliary objectClass " +
-                    "%s that is not allowed by DIT content rule %s.");
+                    "%s that is not allowed by DIT content rule %s");
     registerMessage(MSGID_ENTRY_SCHEMA_DSR_COULD_NOT_LOCK_PARENT,
                     "The Directory Server was unable to evaluate entry %s to " +
                     "determine whether it was compliant with the DIT " +
                     "structure rule configuration because it was unable to " +
-                    "obtain a read lock on parent entry %s.");
+                    "obtain a read lock on parent entry %s");
     registerMessage(MSGID_ENTRY_SCHEMA_DSR_NO_PARENT_ENTRY,
                     "The Directory Server was unable to evaluate entry %s to " +
                     "determine whether it was compliant with the DIT " +
                     "structure rule configuration because parent entry %s " +
-                    "either does not exist or could not be retrieved.");
+                    "either does not exist or could not be retrieved");
     registerMessage(MSGID_ENTRY_SCHEMA_DSR_NO_PARENT_OC,
                     "The Directory Server was unable to evaluate entry %s to " +
                     "determine whether it was compliant with the DIT " +
                     "rule configuration because the parent entry %s does not " +
-                    "appear to contain a valid structural objectclass.");
+                    "appear to contain a valid structural objectclass");
     registerMessage(MSGID_ENTRY_SCHEMA_VIOLATES_PARENT_DSR,
                     "Entry %s is invalid according to the server schema " +
                     "because there is no DIT structure rule that applies " +
                     "to that entry, but there is a DIT structure rule for " +
-                    "the parent entry %s.");
+                    "the parent entry %s");
     registerMessage(MSGID_ENTRY_SCHEMA_DSR_DISALLOWED_SUPERIOR_OC,
                     "Entry %s violates the Directory Server schema " +
                     "configuration because DIT structure rule %s does not " +
                     "allow entries of type %s to be placed immediately below " +
-                    "entries of type %s.");
+                    "entries of type %s");
     registerMessage(MSGID_ENTRY_SCHEMA_COULD_NOT_CHECK_DSR,
                     "An unexpected error occurred while attempting to check " +
-                    "entry %s against DIT structure rule %s:  %s.");
+                    "entry %s against DIT structure rule %s:  %s");
     registerMessage(MSGID_ENTRY_SCHEMA_COULD_NOT_CHECK_PARENT_DSR,
                     "An unexpected error occurred while attempting to " +
                     "perform DIT structure rule processing for the parent of " +
-                    "entry %s:  %s.");
+                    "entry %s:  %s");
     registerMessage(MSGID_ENTRY_SET_UNKNOWN_OC,
                     "Objectclass %s cannot be used in entry %s because that " +
-                    "class is not defined in the Directory Server schema.");
+                    "class is not defined in the Directory Server schema");
     registerMessage(MSGID_ENTRY_ADD_UNKNOWN_OC,
                     "Objectclass %s cannot be added to entry %s because that " +
-                    "class is not defined in the Directory Server schema.");
+                    "class is not defined in the Directory Server schema");
     registerMessage(MSGID_ENTRY_ADD_DUPLICATE_OC,
                     "Objectclass %s is already present in entry %s and " +
-                    "cannot be added a second time.");
+                    "cannot be added a second time");
     registerMessage(MSGID_ENTRY_ADD_OBSOLETE_OC,
                     "Objectclass %s added to entry %s is marked OBSOLETE in " +
-                    "the server schema.");
+                    "the server schema");
     registerMessage(MSGID_ENTRY_DUPLICATE_VALUES,
                     "Unable to add one or more values to attribute %s " +
-                    "because at least one of the values already exists.");
+                    "because at least one of the values already exists");
     registerMessage(MSGID_ENTRY_NO_SUCH_VALUE,
                     "Unable to remove one or more values from attribute %s " +
                     "because at least one of the attributes does not exist " +
-                    "in the entry.");
+                    "in the entry");
     registerMessage(MSGID_ENTRY_OC_INCREMENT_NOT_SUPPORTED,
                     "The increment operation is not supported for the " +
-                    "objectClass attribute.");
+                    "objectClass attribute");
     registerMessage(MSGID_ENTRY_UNKNOWN_MODIFICATION_TYPE,
-                    "Unknown modification type %s requested.");
+                    "Unknown modification type %s requested");
     registerMessage(MSGID_ENTRY_INCREMENT_NO_SUCH_ATTRIBUTE,
                     "Unable to increment the value of attribute %s because " +
-                    "that attribute does not exist in the entry.");
+                    "that attribute does not exist in the entry");
     registerMessage(MSGID_ENTRY_INCREMENT_MULTIPLE_VALUES,
                     "Unable to increment the value of attribute %s because " +
-                    "there are multiple values for that attribute.");
+                    "there are multiple values for that attribute");
     registerMessage(MSGID_ENTRY_INCREMENT_INVALID_VALUE_COUNT,
                     "Unable to increment the value of attribute %s because " +
                     "the provided modification did not have exactly one " +
-                    "value to use as the increment.");
+                    "value to use as the increment");
     registerMessage(MSGID_ENTRY_INCREMENT_CANNOT_PARSE_AS_INT,
                     "Unable to increment the value of attribute %s because " +
                     "either the current value or the increment could not " +
-                    "be parsed as an integer.");
+                    "be parsed as an integer");
     registerMessage(MSGID_ENTRY_DECODE_UNRECOGNIZED_VERSION,
                     "Unable to decode an entry because it had an unsupported " +
-                    "entry version byte value of %s.");
+                    "entry version byte value of %s");
     registerMessage(MSGID_ENTRY_DECODE_EXCEPTION,
                     "Unable to decode an entry because an unexpected " +
-                    "exception was caught during processing:  %s.");
+                    "exception was caught during processing:  %s");
 
 
     registerMessage(MSGID_SEARCH_FILTER_NULL,
                     "Unable to decode the provided filter string as a search " +
-                    "filter because the provided string was empty or null.");
+                    "filter because the provided string was empty or null");
     registerMessage(MSGID_SEARCH_FILTER_UNCAUGHT_EXCEPTION,
                     "An unexpected error occurred while attempting to decode " +
-                    "the string \"%s\" as a search filter:  %s.");
+                    "the string \"%s\" as a search filter:  %s");
     registerMessage(MSGID_SEARCH_FILTER_MISMATCHED_PARENTHESES,
                     "The provided search filter \"%s\" had mismatched " +
                     "parentheses around the portion between positions %d and " +
-                    "%d.");
+                    "%d");
     registerMessage(MSGID_SEARCH_FILTER_NO_EQUAL_SIGN,
                     "The provided search filter \"%s\" was missing an equal " +
                     "sign in the suspected simple filter component between " +
-                    "positions %d and %d.");
+                    "positions %d and %d");
     registerMessage(MSGID_SEARCH_FILTER_INVALID_ESCAPED_BYTE,
                     "The provided search filter \"%s\" had an invalid " +
                     "escaped byte value at position %d.  A backslash in a " +
                     "value must be followed by two hexadecimal characters " +
-                    "that define the byte that has been encoded.");
+                    "that define the byte that has been encoded");
     registerMessage(MSGID_SEARCH_FILTER_COMPOUND_MISSING_PARENTHESES,
                     "The provided search filter \"%s\" could not be decoded " +
                     "because the compound filter between positions %d and %d " +
                     "did not start with an open parenthesis and end with a " +
                     "close parenthesis (they may be parentheses for " +
-                    "different filter components).");
+                    "different filter components)");
     registerMessage(MSGID_SEARCH_FILTER_NO_CORRESPONDING_OPEN_PARENTHESIS,
                     "The provided search filter \"%s\" could not be decoded " +
                     "because the closing parenthesis at position %d did not " +
-                    "have a corresponding open parenthesis.");
+                    "have a corresponding open parenthesis");
     registerMessage(MSGID_SEARCH_FILTER_NO_CORRESPONDING_CLOSE_PARENTHESIS,
                     "The provided search filter \"%s\" could not be decoded " +
                     "because the closing parenthesis at position %d did not " +
-                    "have a corresponding close parenthesis.");
+                    "have a corresponding close parenthesis");
     registerMessage(MSGID_SEARCH_FILTER_SUBSTRING_NO_ASTERISKS,
                     "The provided search filter \"%s\" could not be decoded " +
                     "because the assumed substring filter value between " +
                     "positions %d and %d did not have any asterisk wildcard " +
-                    "characters.");
+                    "characters");
     registerMessage(MSGID_SEARCH_FILTER_EXTENSIBLE_MATCH_NO_COLON,
                     "The provided search filter \"%s\" could not be decoded " +
                     "because the extensible match component starting at " +
                     "position %d did not have a colon to denote the end of " +
-                    "the attribute type name.");
+                    "the attribute type name");
     registerMessage(MSGID_SEARCH_FILTER_INVALID_FILTER_TYPE,
                     "Unable to determine whether entry \"%s\" matches filter " +
                     "\"%s\" because it contained an unknown filter type %s");
     registerMessage(MSGID_SEARCH_FILTER_INVALID_RESULT_TYPE,
                     "Unable to determine whether entry \"%s\" matches filter " +
                     "\"%s\" because the internal check returned an unknown " +
-                    "result type \"%s\".");
+                    "result type \"%s\"");
     registerMessage(MSGID_SEARCH_FILTER_COMPOUND_COMPONENTS_NULL,
                     "Unable to determine whether entry \"%s\" matches filter " +
                     "\"%s\" because the set of filter components for an %s " +
-                    "component was NULL.");
+                    "component was NULL");
     registerMessage(MSGID_SEARCH_FILTER_NESTED_TOO_DEEP,
                     "Unable to determine whether entry \"%s\" matches filter " +
                     "\"%s\" because the filter was nested beyond the maximum " +
-                    "allowed depth of " + MAX_NESTED_FILTER_DEPTH + " levels.");
+                    "allowed depth of " + MAX_NESTED_FILTER_DEPTH + " levels");
     registerMessage(MSGID_SEARCH_FILTER_NOT_COMPONENT_NULL,
                     "Unable to determine whether entry \"%s\" matches filter " +
                     "\"%s\" because the NOT filter component did not include " +
-                    "a subcomponent.");
+                    "a subcomponent");
     registerMessage(MSGID_SEARCH_FILTER_EQUALITY_NO_ATTRIBUTE_TYPE,
                     "Unable to determine whether entry \"%s\" matches filter " +
                     "\"%s\" because an equality component had a NULL " +
-                    "attribute type.");
+                    "attribute type");
     registerMessage(MSGID_SEARCH_FILTER_EQUALITY_NO_ASSERTION_VALUE,
                     "Unable to determine whether entry \"%s\" matches filter " +
                     "\"%s\" because an equality component for attribute %s " +
-                    "had a NULL assertion value.");
+                    "had a NULL assertion value");
     registerMessage(MSGID_SEARCH_FILTER_SUBSTRING_NO_ATTRIBUTE_TYPE,
                     "Unable to determine whether entry \"%s\" matches filter " +
                     "\"%s\" because a substring component had a NULL " +
-                    "attribute type.");
+                    "attribute type");
     registerMessage(MSGID_SEARCH_FILTER_SUBSTRING_NO_SUBSTRING_COMPONENTS,
                     "Unable to determine whether entry \"%s\" matches filter " +
                     "\"%s\" because a substring component for attribute %s " +
                     "did not have any subInitial, subAny, or subFinal " +
-                    "elements.");
+                    "elements");
     registerMessage(MSGID_SEARCH_FILTER_GREATER_OR_EQUAL_NO_ATTRIBUTE_TYPE,
                     "Unable to determine whether entry \"%s\" matches filter " +
                     "\"%s\" because a greater-or-equal component had a NULL " +
-                    "attribute type.");
+                    "attribute type");
     registerMessage(MSGID_SEARCH_FILTER_GREATER_OR_EQUAL_NO_VALUE,
                     "Unable to determine whether entry \"%s\" matches filter " +
                     "\"%s\" because a greater-or-equal component for " +
-                    "attribute %s had a NULL assertion value.");
+                    "attribute %s had a NULL assertion value");
     registerMessage(MSGID_SEARCH_FILTER_LESS_OR_EQUAL_NO_ATTRIBUTE_TYPE,
                     "Unable to determine whether entry \"%s\" matches filter " +
                     "\"%s\" because a less-or-equal component had a NULL " +
-                    "attribute type.");
+                    "attribute type");
     registerMessage(MSGID_SEARCH_FILTER_LESS_OR_EQUAL_NO_ASSERTION_VALUE,
                     "Unable to determine whether entry \"%s\" matches filter " +
                     "\"%s\" because a less-or-equal component for attribute " +
-                    "%s had a NULL assertion value.");
+                    "%s had a NULL assertion value");
     registerMessage(MSGID_SEARCH_FILTER_PRESENCE_NO_ATTRIBUTE_TYPE,
                     "Unable to determine whether entry \"%s\" matches filter " +
                     "\"%s\" because a presence component had a NULL " +
-                    "attribute type.");
+                    "attribute type");
     registerMessage(MSGID_SEARCH_FILTER_APPROXIMATE_NO_ATTRIBUTE_TYPE,
                     "Unable to determine whether entry \"%s\" matches filter " +
                     "\"%s\" because an approximate component had a NULL " +
-                    "attribute type.");
+                    "attribute type");
     registerMessage(MSGID_SEARCH_FILTER_APPROXIMATE_NO_ASSERTION_VALUE,
                     "Unable to determine whether entry \"%s\" matches filter " +
                     "\"%s\" because an approximate component for attribute " +
-                    "%s had a NULL assertion value.");
+                    "%s had a NULL assertion value");
     registerMessage(MSGID_SEARCH_FILTER_EXTENSIBLE_MATCH_NO_ASSERTION_VALUE,
                     "Unable to determine whether entry \"%s\" matches filter " +
                     "\"%s\" because a contained extensible match filter did " +
-                    "not have an assertion value.");
+                    "not have an assertion value");
     registerMessage(MSGID_SEARCH_FILTER_EXTENSIBLE_MATCH_NO_RULE_OR_TYPE,
                     "Unable to determine whether entry \"%s\" matches filter " +
                     "\"%s\" because a contained extensible match filter did " +
-                    "not have either an attribute type or a matching rule ID.");
+                    "not have either an attribute type or a matching rule ID");
     registerMessage(MSGID_SEARCH_BACKEND_EXCEPTION,
                     "An unexpected error was encountered while processing " +
-                    "a search in one of the Directory Server backends:  %s.");
+                    "a search in one of the Directory Server backends:  %s");
 
 
     registerMessage(MSGID_RDN_DECODE_NULL,
                     "Unable to decode the provided string as a relative " +
                     "distinguished name because the provided string was " +
-                    "empty or null.");
+                    "empty or null");
     registerMessage(MSGID_RDN_END_WITH_ATTR_NAME,
                     "Unable to decode the provided string \"%s\" as a " +
                     "relative distinguished name because the string ended " +
@@ -6628,689 +6628,689 @@
                     "Unable to decode the provided string \"%s\" as a " +
                     "relative distinguished name because the first non-blank " +
                     "character after the attribute type %s was not an " +
-                    "equal sign (character read was %s).");
+                    "equal sign (character read was %s)");
     registerMessage(MSGID_RDN_UNEXPECTED_COMMA,
                     "Unable to decode the provided string \"%s\" as a " +
                     "relative distinguished name because it contained an " +
                     "unexpected plus, comma, or semicolon at position %d, "+
-                    "which is not allowed in an RDN.");
+                    "which is not allowed in an RDN");
     registerMessage(MSGID_RDN_ILLEGAL_CHARACTER,
                     "Unable to decode the provided string \"%s\" as a " +
                     "relative distinguished name because an illegal " +
                     "character %s was found at position %d, where either the " +
-                    "end of the string or a '+' sign were expected.");
+                    "end of the string or a '+' sign were expected");
 
 
     registerMessage(MSGID_SCHEMA_CONFLICTING_ATTRIBUTE_OID,
                     "Unable to register attribute type %s with the server " +
                     "schema because its OID %s conflicts with the OID of an " +
-                    "existing attribute type %s.");
+                    "existing attribute type %s");
     registerMessage(MSGID_SCHEMA_CONFLICTING_ATTRIBUTE_NAME,
                     "Unable to register attribute type %s with the server " +
                     "schema because its name %s conflicts with the name of " +
-                    "an existing attribute type %s.");
+                    "an existing attribute type %s");
     registerMessage(MSGID_SCHEMA_CONFLICTING_OBJECTCLASS_OID,
                     "Unable to register objectclass %s with the server " +
                     "schema because its OID %s conflicts with the OID of an " +
-                    "existing objectclass %s.");
+                    "existing objectclass %s");
     registerMessage(MSGID_SCHEMA_CONFLICTING_OBJECTCLASS_NAME,
                     "Unable to register objectclass %s with the server " +
                     "schema because its name %s conflicts with the name of " +
-                    "an existing objectclass %s.");
+                    "an existing objectclass %s");
     registerMessage(MSGID_SCHEMA_CONFLICTING_SYNTAX_OID,
                     "Unable to register attribute syntax %s with the server " +
                     "schema because its OID %s conflicts with the OID of an " +
-                    "existing syntax %s.");
+                    "existing syntax %s");
     registerMessage(MSGID_SCHEMA_CONFLICTING_MR_OID,
                     "Unable to register matching rule %s with the server " +
                     "schema because its OID %s conflicts with the OID of an " +
-                    "existing matching rule %s.");
+                    "existing matching rule %s");
     registerMessage(MSGID_SCHEMA_CONFLICTING_MR_NAME,
                     "Unable to register matching rule %s with the server " +
                     "schema because its name %s conflicts with the name of " +
-                    "an existing matching rule %s.");
+                    "an existing matching rule %s");
     registerMessage(MSGID_SCHEMA_CONFLICTING_MATCHING_RULE_USE,
                     "Unable to register matching rule use %s with the server " +
                     "schema because its matching rule %s conflicts with the " +
-                    "matching rule for an existing matching rule use %s.");
+                    "matching rule for an existing matching rule use %s");
     registerMessage(MSGID_SCHEMA_CONFLICTING_DIT_CONTENT_RULE,
                     "Unable to register DIT content rule %s with the server " +
                     "schema because its structural objectclass %s conflicts " +
                     "with the structural objectclass for an existing DIT " +
-                    "content rule %s.");
+                    "content rule %s");
     registerMessage(MSGID_SCHEMA_CONFLICTING_DIT_STRUCTURE_RULE_NAME_FORM,
                     "Unable to register DIT structure rule %s with the " +
                     "server schema because its name form %s conflicts with " +
-                    "the name form for an existing DIT structure rule %s.");
+                    "the name form for an existing DIT structure rule %s");
     registerMessage(MSGID_SCHEMA_CONFLICTING_DIT_STRUCTURE_RULE_ID,
                     "Unable to register DIT structure rule %s with the " +
                     "server schema because its rule ID %d conflicts with the " +
-                    "rule ID for an existing DIT structure rule %s.");
+                    "rule ID for an existing DIT structure rule %s");
     registerMessage(MSGID_SCHEMA_CONFLICTING_NAME_FORM_OC,
                     "Unable to register name form %s with the server schema " +
                     "because its structural objectclass %s conflicts with " +
-                    "the structural objectclass for an existing name form %s.");
+                    "the structural objectclass for an existing name form %s");
     registerMessage(MSGID_SCHEMA_CONFLICTING_NAME_FORM_OID,
                     "Unable to register name form %s with the server schema " +
                     "because its OID %s conflicts with the OID for an " +
-                    "existing name form %s.");
+                    "existing name form %s");
     registerMessage(MSGID_SCHEMA_CONFLICTING_NAME_FORM_NAME,
                     "Unable to register name form %s with the server schema " +
                     "because its name %s conflicts with the name for an " +
-                    "existing name form %s.");
+                    "existing name form %s");
     registerMessage(MSGID_SCHEMA_CIRCULAR_DEPENDENCY_REFERENCE,
                     "Unable to update the schema element with definition " +
                     "\"%s\" because a circular reference was identified " +
                     "when attempting to rebuild other schema elements " +
-                    "dependent upon it.");
+                    "dependent upon it");
 
 
     registerMessage(MSGID_ADD_OP_INVALID_SYNTAX,
                     "Entry \"%s\" contains a value \"%s\" for attribute %s " +
                     "that is invalid according to the syntax for that " +
-                    "attribute:  %s.");
+                    "attribute:  %s");
     registerMessage(MSGID_ADD_ATTR_IS_OBSOLETE,
                     "Entry \"%s\" cannot be added because it contains " +
                     "attribute type %s which is declared OBSOLETE in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_ADD_OC_IS_OBSOLETE,
                     "Entry \"%s\" cannot be added because it contains " +
                     "objectclass %s which is declared OBSOLETE in the server " +
-                    "schema.");
+                    "schema");
     registerMessage(MSGID_ADD_INVALID_PWPOLICY_DN_SYNTAX,
                     "Entry \"%s\" cannot be added because it contains an " +
-                    "invalid password policy subentry DN:  %s.");
+                    "invalid password policy subentry DN:  %s");
     registerMessage(MSGID_ADD_NO_SUCH_PWPOLICY,
                     "Entry \"%s\" cannot be added because it references " +
                     "password policy subentry %s that does not exist or does " +
-                    "not contain a valid password policy subentry definition.");
+                    "not contain a valid password policy subentry definition");
     registerMessage(MSGID_ADD_ASSERTION_FAILED,
                     "Entry %s cannot be added because the request contained " +
                     "an LDAP assertion control and the associated filter did " +
-                    "not match the contents of the provided entry.");
+                    "not match the contents of the provided entry");
     registerMessage(MSGID_ADD_CANNOT_PROCESS_ASSERTION_FILTER,
                     "Entry %s cannot be added because the request contained " +
                     "an LDAP assertion control, but an error occurred while " +
                     "attempting to compare the provided entry against the " +
-                    "filter contained in that control:  %s.");
+                    "filter contained in that control:  %s");
     registerMessage(MSGID_ADD_UNSUPPORTED_CRITICAL_CONTROL,
                     "Entry %s cannot be added because the request contained " +
                     "a critical control with OID %s that is not supported by " +
-                    "the Directory Server for this type of operation.");
+                    "the Directory Server for this type of operation");
     registerMessage(MSGID_ADD_ATTR_IS_NO_USER_MOD,
                     "Entry %s cannot be added because it includes attribute " +
                     "%s which is defined as NO-USER-MODIFICATION in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_ADD_CANNOT_ADD_ROOT_DSE,
                     "The provided entry cannot be added because it contains " +
                     "a null DN.  This DN is reserved for the root DSE, and " +
-                    "that entry may not be added over protocol.");
+                    "that entry may not be added over protocol");
     registerMessage(MSGID_ADD_ENTRY_NOT_SUFFIX,
                     "The provided entry %s cannot be added because it does " +
                     "not have a parent and is not defined as one of the " +
-                    "suffixes within the Directory Server.");
+                    "suffixes within the Directory Server");
     registerMessage(MSGID_ADD_CANNOT_LOCK_PARENT,
                     "Entry %s cannot be added because the server failed to " +
                     "obtain a read lock on the parent entry %s after " +
-                    "multiple attempts.");
+                    "multiple attempts");
     registerMessage(MSGID_ADD_NO_PARENT,
                     "Entry %s cannot be added because its parent entry %s " +
-                    "does not exist in the server.");
+                    "does not exist in the server");
     registerMessage(MSGID_ADD_CANNOT_LOCK_ENTRY,
                     "Entry %s cannot be added because the server failed " +
                     "to obtain a write lock for this entry after multiple " +
-                    "attempts.");
+                    "attempts");
     registerMessage(MSGID_ADD_MISSING_RDN_ATTRIBUTE,
                     "Entry %s cannot be added because it is missing " +
                     "attribute %s that is contained in the entry's RDN.  " +
                     "All attributes used in the RDN must also be provided in " +
-                    "the attribute list for the entry.");
+                    "the attribute list for the entry");
     registerMessage(MSGID_ADD_CHANGE_PRIVILEGE_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to add entries " +
-                    "that include privileges.");
+                    "that include privileges");
     registerMessage(MSGID_ADD_NOOP,
                     "The add operation was not actually performed in the " +
                     "Directory Server backend because the LDAP no-op control " +
-                    "was present in the request.");
+                    "was present in the request");
     registerMessage(MSGID_ADD_ERROR_NOTIFYING_CHANGE_LISTENER,
                     "An unexpected error occurred while notifying a change " +
-                    "notification listener of an add operation:  %s.");
+                    "notification listener of an add operation:  %s");
     registerMessage(MSGID_ADD_ERROR_NOTIFYING_PERSISTENT_SEARCH,
                     "An unexpected error occurred while notifying persistent " +
                     "search %s of an add operation:  %s.  The persistent " +
-                    "search has been terminated.");
+                    "search has been terminated");
 
 
     registerMessage(MSGID_COMPARE_OP_NO_SUCH_ATTR,
                     "Entry \"%s\" does not contain any values for attribute " +
-                    "\"%s\".");
+                    "\"%s\"");
     registerMessage(MSGID_COMPARE_OP_NO_SUCH_ATTR_WITH_OPTIONS,
                     "Entry \"%s\" does not contain any values for attribute " +
-                    "\"%s\" with the specified set of options.");
+                    "\"%s\" with the specified set of options");
 
 
     registerMessage(MSGID_CANCELED_BY_BIND_REQUEST,
                     "Processing on this operation has been canceled because " +
                     "the Directory Server received a bind request on this " +
                     "connection, which requires that all operations in " +
-                    "progress to be abandoned.");
+                    "progress to be abandoned");
     registerMessage(MSGID_BIND_OPERATION_UNKNOWN_USER,
                     "Unable to bind to the Directory Server as user %s " +
-                    "because no such user exists in the server.");
+                    "because no such user exists in the server");
     registerMessage(MSGID_BIND_UNSUPPORTED_CRITICAL_CONTROL,
                     "Unable to process the bind request because it " +
                     "contained a control with OID %s that was marked " +
                     "critical but this control is not supported for the bind " +
-                    "operation.");
+                    "operation");
     registerMessage(MSGID_BIND_DN_BUT_NO_PASSWORD,
                     "Unable to process the simple bind request because it " +
                     "contained a bind DN but no password, which is forbidden " +
-                    "by the server configuration.");
+                    "by the server configuration");
     registerMessage(MSGID_BIND_OPERATION_CANNOT_LOCK_USER,
                     "Unable to process the bind because the server was " +
-                    "unable to obtain a read lock on the entry %s.");
+                    "unable to obtain a read lock on the entry %s");
     registerMessage(MSGID_BIND_OPERATION_NO_PASSWORD,
                     "Unable to bind to the Directory Server as user %s " +
                     "using simple authentication because that user does " +
-                    "not have a password.");
+                    "not have a password");
     registerMessage(MSGID_BIND_OPERATION_UNKNOWN_SASL_MECHANISM,
                     "Unable to process the bind request because it attempted " +
                     "to use an unknown SASL mechanism %s that is not " +
-                    "available in the Directory Server.");
+                    "available in the Directory Server");
     registerMessage(MSGID_BIND_OPERATION_UNKNOWN_STORAGE_SCHEME,
                     "Password with unknown storage scheme %s included in " +
-                    "user entry %s will be ignored.");
+                    "user entry %s will be ignored");
     registerMessage(MSGID_BIND_MULTIPLE_USER_SIZE_LIMITS,
                     "There are multiple user-specific size limit values " +
                     "contained in user entry %s.  The default server size " +
-                    "limit will be used.");
+                    "limit will be used");
     registerMessage(MSGID_BIND_CANNOT_PROCESS_USER_SIZE_LIMIT,
                     "The user-specific size limit value %s contained in " +
                     "user entry %s could not be parsed as an integer.  The " +
-                    "default server size limit will be used.");
+                    "default server size limit will be used");
     registerMessage(MSGID_BIND_MULTIPLE_USER_TIME_LIMITS,
                     "There are multiple user-specific time limit values " +
                     "contained in user entry %s.  The default server time " +
-                    "limit will be used.");
+                    "limit will be used");
     registerMessage(MSGID_BIND_CANNOT_PROCESS_USER_TIME_LIMIT,
                     "The user-specific time limit value %s contained in " +
                     "user entry %s could not be parsed as an integer.  The " +
-                    "default server time limit will be used.");
+                    "default server time limit will be used");
     registerMessage(MSGID_BIND_PASSWORD_EXPIRING,
                     "The user password is about to expire (time to " +
-                    "expiration:  %s).");
+                    "expiration:  %s)");
     registerMessage(MSGID_BIND_OPERATION_WRONG_PASSWORD,
                     "The password provided by the user did not match any " +
-                    "password(s) stored in the user's entry.");
+                    "password(s) stored in the user's entry");
     registerMessage(MSGID_BIND_ACCOUNT_TEMPORARILY_LOCKED,
                     "The account has been locked as a result of too many " +
-                    "failed authentication attempts (time to unlock:  %s).");
+                    "failed authentication attempts (time to unlock:  %s)");
     registerMessage(MSGID_BIND_ACCOUNT_PERMANENTLY_LOCKED,
                     "The account has been locked as a result of too many " +
                     "failed authentication attempts.  It may only be " +
-                    "unlocked by an administrator.");
+                    "unlocked by an administrator");
     registerMessage(MSGID_BIND_OPERATION_PASSWORD_VALIDATION_EXCEPTION,
                     "An unexpected error occurred while attempting to " +
-                    "validate the provided password:  %s.");
+                    "validate the provided password:  %s");
 
 
     registerMessage(MSGID_ABANDON_OP_NO_SUCH_OPERATION,
                     "Unable to abandon the operation with message ID %d " +
                     "because no information is available about that " +
                     "operation.  This could mean that the target operation " +
-                    "has already completed or was never requested.");
+                    "has already completed or was never requested");
     registerMessage(MSGID_CANCELED_BY_ABANDON_REQUEST,
                     "The operation was canceled because the client issued " +
-                    "an abandon request (message ID %d) for this operation.");
+                    "an abandon request (message ID %d) for this operation");
 
 
     registerMessage(MSGID_CANCELED_BY_PREPARSE_DISCONNECT,
                     "The operation was canceled because the client " +
-                    "connection was terminated by a pre-parse plugin.");
+                    "connection was terminated by a pre-parse plugin");
     registerMessage(MSGID_CANCELED_BY_PREOP_DISCONNECT,
                     "The operation was canceled because the client " +
-                    "connection was terminated by a pre-operation plugin.");
+                    "connection was terminated by a pre-operation plugin");
     registerMessage(MSGID_CANCELED_BY_POSTOP_DISCONNECT,
                     "The operation was canceled because the client " +
-                    "connection was terminated by a post-operation plugin.");
+                    "connection was terminated by a post-operation plugin");
     registerMessage(MSGID_CANCELED_BY_SEARCH_ENTRY_DISCONNECT,
                     "The operation was canceled because the client " +
                     "connection was terminated by a search result entry " +
-                    "plugin working on entry %s.");
+                    "plugin working on entry %s");
     registerMessage(MSGID_CANCELED_BY_SEARCH_REF_DISCONNECT,
                     "The operation was canceled because the client " +
                     "connection was terminated by a search result reference " +
-                    "plugin working on referral %s.");
+                    "plugin working on referral %s");
 
 
     registerMessage(MSGID_COMPARE_CONFIG_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to access the " +
-                    "server configuration.");
+                    "server configuration");
     registerMessage(MSGID_COMPARE_CANNOT_LOCK_ENTRY,
                     "The Directory Server was unable to obtain a read " +
                     "lock on entry %s after multiple attempts.  Processing " +
-                    "on this operation cannot continue.");
+                    "on this operation cannot continue");
     registerMessage(MSGID_COMPARE_NO_SUCH_ENTRY,
                     "The specified entry %s does not exist in the " +
-                    "Directory Server.");
+                    "Directory Server");
     registerMessage(MSGID_COMPARE_ASSERTION_FAILED,
                     "Cannot perform the compare operation on entry %s " +
                     "because the request contained an LDAP assertion control " +
                     "and the associated filter did not match the contents of " +
-                    "the that entry.");
+                    "the that entry");
     registerMessage(MSGID_COMPARE_CANNOT_PROCESS_ASSERTION_FILTER,
                     "Cannot perform the compare operation on entry %s " +
                     "because the request contained an LDAP assertion " +
                     "control, but an error occurred while attempting to " +
                     "compare the target entry against the filter contained " +
-                    "in that control:  %s.");
+                    "in that control:  %s");
     registerMessage(MSGID_COMPARE_UNSUPPORTED_CRITICAL_CONTROL,
                     "Cannot perform the compare operation on entry %s " +
                     "because the request contained a critical control with " +
                     "OID %s that is not supported by the Directory Server " +
-                    "for this type of operation.");
+                    "for this type of operation");
 
 
     registerMessage(MSGID_DELETE_CANNOT_LOCK_ENTRY,
                     "Entry %s cannot be removed because the server failed " +
                     "to obtain a write lock for this entry after multiple " +
-                    "attempts.");
+                    "attempts");
     registerMessage(MSGID_DELETE_CANNOT_GET_ENTRY_FOR_ASSERTION,
                     "Entry %s cannot be removed because the delete request " +
                     "contains an LDAP assertion control and an error " +
                     "occurred while trying to retrieve the target entry to " +
-                    "compare it against the associated filter:  %s.");
+                    "compare it against the associated filter:  %s");
     registerMessage(MSGID_DELETE_NO_SUCH_ENTRY_FOR_ASSERTION,
                     "Entry %s cannot be removed because it was determined " +
                     "that the target entry does not exist while attempting " +
                     "to process it against the LDAP assertion control " +
-                    "contained in the request.");
+                    "contained in the request");
     registerMessage(MSGID_DELETE_ASSERTION_FAILED,
                     "Entry %s cannot be removed because the request " +
                     "contained an LDAP assertion control and the associated " +
-                    "filter did not match the contents of the that entry.");
+                    "filter did not match the contents of the that entry");
     registerMessage(MSGID_DELETE_CANNOT_PROCESS_ASSERTION_FILTER,
                     "Entry %s cannot be removed because the request " +
                     "contained an LDAP assertion control, but an error " +
                     "occurred while attempting to compare the target entry " +
-                    "against the filter contained in that control:  %s.");
+                    "against the filter contained in that control:  %s");
     registerMessage(MSGID_DELETE_PREREAD_NO_ENTRY,
                     "Entry %s cannot be removed because it was determined " +
                     "that the target entry does not exist while attempting " +
-                    "to process it against the LDAP pre-read request control.");
+                    "to process it against the LDAP pre-read request control");
     registerMessage(MSGID_DELETE_UNSUPPORTED_CRITICAL_CONTROL,
                     "Entry %s cannot be removed because the request " +
                     "contained a critical control with OID %s that is not " +
                     "supported by the Directory Server for this type of " +
-                    "operation.");
+                    "operation");
     registerMessage(MSGID_DELETE_NO_SUCH_ENTRY,
-                    "Entry %s does not exist in the Directory Server.");
+                    "Entry %s does not exist in the Directory Server");
     registerMessage(MSGID_DELETE_HAS_SUB_BACKEND,
                     "Entry %s cannot be removed because the backend that " +
                     "should contain that entry has a subordinate backend " +
-                    "with a base DN of %s that is below the target DN.");
+                    "with a base DN of %s that is below the target DN");
     registerMessage(MSGID_DELETE_NOOP,
                     "The delete operation was not actually performed in the " +
                     "Directory Server backend because the LDAP no-op control " +
-                    "was present in the request.");
+                    "was present in the request");
     registerMessage(MSGID_DELETE_ERROR_NOTIFYING_CHANGE_LISTENER,
                     "An unexpected error occurred while notifying a change " +
-                    "notification listener of a delete operation:  %s.");
+                    "notification listener of a delete operation:  %s");
     registerMessage(MSGID_DELETE_ERROR_NOTIFYING_PERSISTENT_SEARCH,
                     "An unexpected error occurred while notifying persistent " +
                     "search %s of a delete operation:  %s.  The persistent " +
-                    "search has been terminated.");
+                    "search has been terminated");
 
 
     registerMessage(MSGID_SEARCH_TIME_LIMIT_EXCEEDED,
                     "The maximum time limit of %d seconds for processing " +
-                    "this search operation has expired.");
+                    "this search operation has expired");
     registerMessage(MSGID_SEARCH_SIZE_LIMIT_EXCEEDED,
                     "This search operation has sent the maximum of %d " +
-                    "entries to the client.");
+                    "entries to the client");
     registerMessage(MSGID_SEARCH_CANNOT_GET_ENTRY_FOR_ASSERTION,
                     "The search request cannot be processed because it " +
                     "contains an LDAP assertion control and an error " +
                     "occurred while trying to retrieve the base entry to " +
-                    "compare it against the assertion filter:  %s.");
+                    "compare it against the assertion filter:  %s");
     registerMessage(MSGID_SEARCH_NO_SUCH_ENTRY_FOR_ASSERTION,
                     "The search request cannot be processed because it " +
                     "contains an LDAP assertion control but the search base " +
-                    "entry does not exist.");
+                    "entry does not exist");
     registerMessage(MSGID_SEARCH_ASSERTION_FAILED,
                     "The search request cannot be processed because it " +
                     "contains an LDAP assertion control and the assertion " +
-                    "filter did not match the contents of the base entry.");
+                    "filter did not match the contents of the base entry");
     registerMessage(MSGID_SEARCH_CANNOT_PROCESS_ASSERTION_FILTER,
                     "The search request cannot be processed because it " +
                     "contains an LDAP assertion control, but an error " +
                     "occurred while attempting to compare the base entry " +
-                    "against the assertion filter:  %s.");
+                    "against the assertion filter:  %s");
     registerMessage(MSGID_SEARCH_UNSUPPORTED_CRITICAL_CONTROL,
                     "The search request cannot be processed because it " +
                     "contains a critical control with OID %s that is not " +
                     "supported by the Directory Server for this type of " +
-                    "operation.");
+                    "operation");
     registerMessage(MSGID_SEARCH_BASE_DOESNT_EXIST,
                     "The entry %s specified as the search base does not " +
-                    "exist in the Directory Server.");
+                    "exist in the Directory Server");
 
 
     registerMessage(MSGID_MODDN_NO_PARENT,
                     "A modify DN operation cannot be performed on entry %s " +
-                    "because the new RDN would not have a parent DN.");
+                    "because the new RDN would not have a parent DN");
     registerMessage(MSGID_MODDN_NO_BACKEND_FOR_CURRENT_ENTRY,
                     "The modify DN operation for entry %s cannot be " +
                     "performed because no backend is registered to handle " +
-                    "that DN.");
+                    "that DN");
     registerMessage(MSGID_MODDN_NO_BACKEND_FOR_NEW_ENTRY,
                     "The modify DN operation for entry %s cannot be " +
                     "performed because no backend is registered to handle " +
-                    "the new DN %s.");
+                    "the new DN %s");
     registerMessage(MSGID_MODDN_DIFFERENT_BACKENDS,
                     "The modify DN operation for entry %s cannot be " +
                     "performed because the backend holding the current entry " +
                     "is different from the backend used to handle the new DN " +
                     "%s.  Modify DN operations may not span multiple " +
-                    "backends.");
+                    "backends");
     registerMessage(MSGID_MODDN_CANNOT_LOCK_CURRENT_DN,
                     "The modify DN operation for entry %s cannot be " +
                     "performed because the server was unable to obtain a " +
-                    "write lock for that DN.");
+                    "write lock for that DN");
     registerMessage(MSGID_MODDN_EXCEPTION_LOCKING_NEW_DN,
                     "The modify DN operation for entry %s cannot be " +
                     "performed because an exception was caught while " +
-                    "attempting to obtain a write lock for new DN %s:  %s.");
+                    "attempting to obtain a write lock for new DN %s:  %s");
     registerMessage(MSGID_MODDN_CANNOT_LOCK_NEW_DN,
                     "The modify DN operation for entry %s cannot be " +
                     "performed because the server was unable to obtain a " +
-                    "write lock for the new DN %s.");
+                    "write lock for the new DN %s");
     registerMessage(MSGID_MODDN_NO_CURRENT_ENTRY,
                     "The modify DN operation for entry %s cannot be " +
                     "performed because that entry does not exist in the " +
-                    "server.");
+                    "server");
     registerMessage(MSGID_MODDN_ASSERTION_FAILED,
                     "Entry %s cannot be renamed because the request " +
                     "contained an LDAP assertion control and the associated " +
-                    "filter did not match the contents of the that entry.");
+                    "filter did not match the contents of the that entry");
     registerMessage(MSGID_MODDN_CANNOT_PROCESS_ASSERTION_FILTER,
                     "Entry %s cannot be renamed because the request " +
                     "contained an LDAP assertion control, but an error " +
                     "occurred while attempting to compare the target entry " +
-                    "against the filter contained in that control:  %s.");
+                    "against the filter contained in that control:  %s");
     registerMessage(MSGID_MODDN_UNSUPPORTED_CRITICAL_CONTROL,
                     "Entry %s cannot be renamed because the request " +
                     "contained a critical control with OID %s that is not " +
                     "supported by the Directory Server for this type of " +
-                    "operation.");
+                    "operation");
     registerMessage(MSGID_MODDN_OLD_RDN_ATTR_IS_NO_USER_MOD,
                     "Entry %s cannot be renamed because the current DN " +
                     "includes attribute %s which is defined as " +
                     "NO-USER-MODIFICATION in the server schema and the " +
-                    "deleteOldRDN flag was set in the modify DN request.");
+                    "deleteOldRDN flag was set in the modify DN request");
     registerMessage(MSGID_MODDN_NEW_RDN_ATTR_IS_NO_USER_MOD,
                     "Entry %s cannot be renamed because the new RDN " +
                     "includes attribute %s which is defined as " +
                     "NO-USER-MODIFICATION in the server schema, and the " +
                     "target value for that attribute is not already " +
-                    "included in the entry.");
+                    "included in the entry");
     registerMessage(MSGID_MODDN_VIOLATES_SCHEMA,
                     "The modify DN operation for entry %s cannot be " +
                     "performed because the change would have violated the " +
-                    "server schema:  %s.");
+                    "server schema:  %s");
     registerMessage(MSGID_MODDN_NEWRDN_ATTR_IS_OBSOLETE,
                     "The modify DN operation for entry %s cannot be " +
                     "performed because the new RDN includes attribute type " +
-                    "%s which is declared OBSOLETE in the server schema.");
+                    "%s which is declared OBSOLETE in the server schema");
     registerMessage(MSGID_MODDN_PREOP_INCREMENT_NO_ATTR,
                     "The modify DN operation for entry %s cannot be " +
                     "performed because a pre-operation plugin attempted to " +
                     "increment attribute %s but that attribute does not " +
-                    "exist in the target entry.");
+                    "exist in the target entry");
     registerMessage(MSGID_MODDN_PREOP_INCREMENT_MULTIPLE_VALUES,
                     "The modify DN operation for entry %s cannot be " +
                     "performed because a pre-operation plugin attempted to " +
                     "increment attribute %s but that attribute has multiple " +
-                    "values in the target entry.");
+                    "values in the target entry");
     registerMessage(MSGID_MODDN_PREOP_INCREMENT_VALUE_NOT_INTEGER,
                     "The modify DN operation for entry %s cannot be " +
                     "performed because a pre-operation plugin attempted to " +
                     "increment attribute %s but the value of that attribute " +
-                    "is not an integer.");
+                    "is not an integer");
     registerMessage(MSGID_MODDN_PREOP_INCREMENT_NO_AMOUNT,
                     "The modify DN operation for entry %s cannot be " +
                     "performed because a pre-operation plugin attempted to " +
                     "increment attribute %s but no increment amount was " +
-                    "provided.");
+                    "provided");
     registerMessage(MSGID_MODDN_PREOP_INCREMENT_MULTIPLE_AMOUNTS,
                     "The modify DN operation for entry %s cannot be " +
                     "performed because a pre-operation plugin attempted to " +
                     "increment attribute %s but multiple increment amount " +
-                    "values were provided.");
+                    "values were provided");
     registerMessage(MSGID_MODDN_PREOP_INCREMENT_AMOUNT_NOT_INTEGER,
                     "The modify DN operation for entry %s cannot be " +
                     "performed because a pre-operation plugin attempted to " +
                     "increment attribute %s but the increment amount value " +
-                    "was not an integer.");
+                    "was not an integer");
     registerMessage(MSGID_MODDN_PREOP_VIOLATES_SCHEMA,
                     "The modify DN operation for entry %s cannot be " +
                     "performed because a pre-operation plugin modified the " +
                     "entry in a way that caused it to violate the server " +
-                    "schema:  %s.");
+                    "schema:  %s");
     registerMessage(MSGID_MODDN_NOOP,
                     "The modify DN operation was not actually performed in " +
                     "the Directory Server backend because the LDAP no-op " +
-                    "control was present in the request.");
+                    "control was present in the request");
     registerMessage(MSGID_MODDN_ERROR_NOTIFYING_CHANGE_LISTENER,
                     "An unexpected error occurred while notifying a change " +
-                    "notification listener of a modify DN operation:  %s.");
+                    "notification listener of a modify DN operation:  %s");
     registerMessage(MSGID_MODDN_ERROR_NOTIFYING_PERSISTENT_SEARCH,
                     "An unexpected error occurred while notifying persistent " +
                     "search %s of a modify DN operation:  %s.  The " +
-                    "persistent search has been terminated.");
+                    "persistent search has been terminated");
 
 
     registerMessage(MSGID_MODIFY_NO_MODIFICATIONS,
                     "Entry %s cannot be updated because the request did not " +
-                    "contain any modifications.");
+                    "contain any modifications");
     registerMessage(MSGID_MODIFY_CANNOT_LOCK_ENTRY,
                     "Entry %s cannot be modified because the server failed " +
                     "to obtain a write lock for this entry after multiple " +
-                    "attempts.");
+                    "attempts");
     registerMessage(MSGID_MODIFY_NO_SUCH_ENTRY,
                     "Entry %s cannot be modified because no such entry " +
-                    "exists in the server.");
+                    "exists in the server");
     registerMessage(MSGID_MODIFY_ASSERTION_FAILED,
                     "Entry %s cannot be modified because the request " +
                     "contained an LDAP assertion control and the associated " +
-                    "filter did not match the contents of the that entry.");
+                    "filter did not match the contents of the that entry");
     registerMessage(MSGID_MODIFY_CANNOT_PROCESS_ASSERTION_FILTER,
                     "Entry %s cannot be modified because the request " +
                     "contained an LDAP assertion control, but an error " +
                     "occurred while attempting to compare the target entry " +
-                    "against the filter contained in that control:  %s.");
+                    "against the filter contained in that control:  %s");
     registerMessage(MSGID_MODIFY_UNSUPPORTED_CRITICAL_CONTROL,
                     "Entry %s cannot be modified because the request " +
                     "contained a critical control with OID %s that is not " +
                     "supported by the Directory Server for this type of " +
-                    "operation.");
+                    "operation");
     registerMessage(MSGID_MODIFY_PWRESET_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to reset user " +
-                    "passwords.");
+                    "passwords");
     registerMessage(MSGID_MODIFY_MUST_CHANGE_PASSWORD,
                     "You must change your password before you will be " +
-                    "allowed to perform any other operations.");
+                    "allowed to perform any other operations");
     registerMessage(MSGID_MODIFY_ATTR_IS_NO_USER_MOD,
                     "Entry %s cannot be modified because the modification " +
                     "attempted to update attribute %s which is defined as " +
-                    "NO-USER-MODIFICATION in the server schema.");
+                    "NO-USER-MODIFICATION in the server schema");
     registerMessage(MSGID_MODIFY_ATTR_IS_OBSOLETE,
                     "Entry %s cannot be modified because the modification " +
                     "attempted to set one or more new values for attribute " +
-                    "%s which is marked OBSOLETE in the server schema.");
+                    "%s which is marked OBSOLETE in the server schema");
     registerMessage(MSGID_MODIFY_CHANGE_PRIVILEGE_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to modify the " +
-                    "set of privileges contained in an entry.");
+                    "set of privileges contained in an entry");
     registerMessage(MSGID_MODIFY_PASSWORDS_CANNOT_HAVE_OPTIONS,
                     "Attributes used to hold user passwords are not allowed " +
-                    "to have any attribute options.");
+                    "to have any attribute options");
     registerMessage(MSGID_MODIFY_NO_USER_PW_CHANGES,
-                    "Users are not allowed to change their own passwords.");
+                    "Users are not allowed to change their own passwords");
     registerMessage(MSGID_MODIFY_REQUIRE_SECURE_CHANGES,
                     "Password changes must be performed over a secure " +
-                    "authentication channel.");
+                    "authentication channel");
     registerMessage(MSGID_MODIFY_WITHIN_MINIMUM_AGE,
                     "The password cannot be changed because it has not been " +
-                    "long enough since the last password change.");
+                    "long enough since the last password change");
     registerMessage(MSGID_MODIFY_MULTIPLE_VALUES_NOT_ALLOWED,
                     "Multiple password values are not allowed in user " +
-                    "entries.");
+                    "entries");
     registerMessage(MSGID_MODIFY_NO_PREENCODED_PASSWORDS,
-                    "User passwords may not be provided in pre-encoded form.");
+                    "User passwords may not be provided in pre-encoded form");
     registerMessage(MSGID_MODIFY_PASSWORD_EXISTS,
                     "The specified password value already exists in the " +
-                    "user entry.");
+                    "user entry");
     registerMessage(MSGID_MODIFY_NO_EXISTING_VALUES,
                     "The user entry does not have any existing passwords to " +
-                    "remove.");
+                    "remove");
     registerMessage(MSGID_MODIFY_CANNOT_DECODE_PW,
                     "An error occurred while attempting to decode an " +
-                    "existing user password:  %s.");
+                    "existing user password:  %s");
     registerMessage(MSGID_MODIFY_INVALID_PASSWORD,
                     "The provided user password does not match any password " +
-                    "in the user's entry.");
+                    "in the user's entry");
     registerMessage(MSGID_MODIFY_INVALID_MOD_TYPE_FOR_PASSWORD,
                     "Invalid modification type %s attempted on password " +
-                    "attribute %s.");
+                    "attribute %s");
     registerMessage(MSGID_MODIFY_INVALID_DISABLED_VALUE,
                     "Invalid value provided for operational attribute %s:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_MODIFY_ADD_NO_VALUES,
                     "Entry %s cannot be modified because the modification " +
                     "contained an add component for attribute %s but no " +
-                    "values were provided.");
+                    "values were provided");
     registerMessage(MSGID_MODIFY_ADD_INVALID_SYNTAX,
                     "When attempting to modify entry %s to add one or more " +
                     "values for attribute %s, value \"%s\" was found to be " +
-                    "invalid according to the associated syntax:  %s.");
+                    "invalid according to the associated syntax:  %s");
     registerMessage(MSGID_MODIFY_ADD_DUPLICATE_VALUE,
                     "Entry %s cannot be modified because it would have " +
                     "resulted in one or more duplicate values for attribute " +
-                    "%s:  %s.");
+                    "%s:  %s");
     registerMessage(MSGID_MODIFY_DELETE_RDN_ATTR,
                     "Entry %s cannot be modified because the change to " +
-                    "attribute %s would have removed a value used in the RDN.");
+                    "attribute %s would have removed a value used in the RDN");
     registerMessage(MSGID_MODIFY_DELETE_MISSING_VALUES,
                     "Entry %s cannot be modified because the attempt to " +
                     "update attribute %s would have removed one or more " +
-                    "values from the attribute that were not present:  %s.");
+                    "values from the attribute that were not present:  %s");
     registerMessage(MSGID_MODIFY_DELETE_NO_SUCH_ATTR,
                     "Entry %s cannot be modified because an attempt was made " +
                     "to remove one or more values from attribute %s but this " +
-                    "attribute is not present in the entry.");
+                    "attribute is not present in the entry");
     registerMessage(MSGID_MODIFY_REPLACE_INVALID_SYNTAX,
                     "When attempting to modify entry %s to replace the set " +
                     "of values for attribute %s, value \"%s\" was found to " +
-                    "be invalid according to the associated syntax:  %s.");
+                    "be invalid according to the associated syntax:  %s");
     registerMessage(MSGID_MODIFY_INCREMENT_RDN,
                     "Entry %s cannot be modified because an attempt was made " +
                     "to increment the value of attribute %s which is used as " +
-                    "an RDN attribute for the entry.");
+                    "an RDN attribute for the entry");
     registerMessage(MSGID_MODIFY_INCREMENT_REQUIRES_VALUE,
                     "Entry %s cannot be modified because an attempt was made " +
                     "to increment the value of attribute %s but the request " +
                     "did not include a value for that attribute specifying " +
-                    "the amount by which to increment the value.");
+                    "the amount by which to increment the value");
     registerMessage(MSGID_MODIFY_INCREMENT_REQUIRES_SINGLE_VALUE,
                     "Entry %s cannot be modified because an attempt was made " +
                     "to increment the value of attribute %s but the request " +
                     "contained multiple values, where only a single integer " +
-                    "value is allowed.");
+                    "value is allowed");
     registerMessage(MSGID_MODIFY_INCREMENT_PROVIDED_VALUE_NOT_INTEGER,
                     "Entry %s cannot be modified because an attempt was made " +
                     "to increment the value of attribute %s but the value " +
                     "\"%s\" contained in the request could not be parsed as " +
-                    "an integer.");
+                    "an integer");
     registerMessage(MSGID_MODIFY_INCREMENT_REQUIRES_EXISTING_VALUE,
                     "Entry %s cannot be modified because an attempt was made " +
                     "to increment the value of attribute %s but that " +
-                    "attribute did not have any values in the target entry.");
+                    "attribute did not have any values in the target entry");
     registerMessage(MSGID_MODIFY_PW_CHANGE_REQUIRES_CURRENT_PW,
                     "The password policy requires that user password changes " +
-                    "include the current password in the request.");
+                    "include the current password in the request");
     registerMessage(MSGID_MODIFY_MULTIPLE_PASSWORDS_NOT_ALLOWED,
                     "The password change would result in multiple password " +
-                    "values in the user entry, which is not allowed.");
+                    "values in the user entry, which is not allowed");
     registerMessage(MSGID_MODIFY_PW_VALIDATION_FAILED,
                     "The provided password value was rejected by a password " +
-                    "validator:  %s.");
+                    "validator:  %s");
     registerMessage(MSGID_MODIFY_INCREMENT_REQUIRES_INTEGER_VALUE,
                     "Entry %s cannot be modified because an attempt was " +
                     "made to increment the value of attribute %s but the " +
-                    "value \"%s\" could not be parsed as an integer.");
+                    "value \"%s\" could not be parsed as an integer");
     registerMessage(MSGID_MODIFY_VIOLATES_SCHEMA,
                     "Entry %s cannot not be modified because the resulting " +
-                    "entry would have violated the server schema:  %s.");
+                    "entry would have violated the server schema:  %s");
     registerMessage(MSGID_MODIFY_NO_BACKEND_FOR_ENTRY,
                     "Entry %s cannot be modified because there is no backend " +
-                    "registered to handle operations for that entry.");
+                    "registered to handle operations for that entry");
     registerMessage(MSGID_MODIFY_NOOP,
                     "The modify operation was not actually performed in the " +
                     "Directory Server backend because the LDAP no-op control " +
-                    "was present in the request.");
+                    "was present in the request");
     registerMessage(MSGID_MODIFY_PASSWORD_CHANGED,
-                    "The user password has been changed.");
+                    "The user password has been changed");
     registerMessage(MSGID_MODIFY_PASSWORD_RESET,
-                    "The user password has been administratively reset.");
+                    "The user password has been administratively reset");
     registerMessage(MSGID_MODIFY_ACCOUNT_ENABLED,
-                    "The user account has been administratively enabled.");
+                    "The user account has been administratively enabled");
     registerMessage(MSGID_MODIFY_ACCOUNT_DISABLED,
-                    "The user account has been administratively disabled.");
+                    "The user account has been administratively disabled");
     registerMessage(MSGID_MODIFY_ACCOUNT_UNLOCKED,
-                    "The user account has been administratively unlocked.");
+                    "The user account has been administratively unlocked");
     registerMessage(MSGID_MODIFY_ERROR_NOTIFYING_CHANGE_LISTENER,
                     "An unexpected error occurred while notifying a change " +
-                    "notification listener of a modify operation:  %s.");
+                    "notification listener of a modify operation:  %s");
     registerMessage(MSGID_MODIFY_ERROR_NOTIFYING_PERSISTENT_SEARCH,
                     "An unexpected error occurred while notifying persistent " +
                     "search %s of a modify operation:  %s.  The persistent " +
-                    "search has been terminated.");
+                    "search has been terminated");
 
 
     registerMessage(MSGID_EXTENDED_NO_HANDLER,
                     "There is no extended operation handler registered with " +
                     "the Directory Server for handling extended operations " +
-                    "with a request OID of %s.");
+                    "with a request OID of %s");
     registerMessage(MSGID_EXTENDED_UNSUPPORTED_CRITICAL_CONTROL,
                     "Unable to process the request for extended operation %s " +
                     "because it contained an unsupported critical control " +
-                    "with OID %s.");
+                    "with OID %s");
 
 
     registerMessage(MSGID_CONNHANDLER_CLOSED_BY_SHUTDOWN,
-                    "The Directory Server is shutting down.");
+                    "The Directory Server is shutting down");
     registerMessage(MSGID_CONNHANDLER_CLOSED_BY_DISABLE,
                     "The connection handler that accepted this connection " +
-                    "has been disabled.");
+                    "has been disabled");
     registerMessage(MSGID_CONNHANDLER_CLOSED_BY_DELETE,
                     "The connection handler that accepted this connection " +
-                    "has been removed from the server.");
+                    "has been removed from the server");
 
 
     registerMessage(MSGID_DSCORE_TOOL_DESCRIPTION,
                     "This utility may be used to start the Directory Server, " +
                     "as well as to obtain the server version and other forms " +
-                    "of general server information.");
+                    "of general server information");
     registerMessage(MSGID_DSCORE_DESCRIPTION_CONFIG_CLASS,
                     "Specifies the fully-qualified name of the Java class " +
-                    "to use as the Directory Server configuration handler.");
+                    "to use as the Directory Server configuration handler");
     registerMessage(MSGID_DSCORE_DESCRIPTION_CONFIG_FILE,
                     "Specifies the path to the file containing the " +
                     "information needed by the configuration handler to " +
-                    "obtain the Directory Server configuration.");
+                    "obtain the Directory Server configuration");
     registerMessage(MSGID_DSCORE_DESCRIPTION_CHECK_STARTABILITY,
                     "Used to determine whether a server can be started or not" +
-                    "and the mode to be used to start it.");
+                    "and the mode to be used to start it");
     registerMessage(MSGID_DSCORE_DESCRIPTION_WINDOWS_NET_START,
                     "Used by the window service code to inform that start-ds "+
                     "is being called from the window services after a call "+
@@ -7330,252 +7330,252 @@
                     "Display this usage information");
     registerMessage(MSGID_DSCORE_CANNOT_INITIALIZE_ARGS,
                     "An error occurred while attempting to initialize the " +
-                    "command-line arguments:  %s.");
+                    "command-line arguments:  %s");
     registerMessage(MSGID_DSCORE_ERROR_PARSING_ARGS,
                     "An error occurred while attempting to parse the " +
-                    "provided set of command line arguments:  %s.");
+                    "provided set of command line arguments:  %s");
     registerMessage(MSGID_DSCORE_ERROR_NODETACH_AND_WINDOW_SERVICE,
                     "OpenDS is configured to run as a window service and it "+
-                    "cannot run in no-detach mode.");
+                    "cannot run in no-detach mode");
     registerMessage(MSGID_DSCORE_CANNOT_BOOTSTRAP,
                     "An error occurred while attempting to bootstrap the " +
-                    "Directory Server:  %s.");
+                    "Directory Server:  %s");
     registerMessage(MSGID_DSCORE_CANNOT_START,
                     "An error occurred while trying to start the Directory " +
-                    "Server:  %s.");
+                    "Server:  %s");
 
 
     registerMessage(MSGID_BACKUPINFO_NO_DELIMITER,
                     "The line \"%s\" associated with the backup information " +
                     "in directory %s could not be parsed because it did not " +
                     "contain an equal sign to delimit the property name from " +
-                    "the value.");
+                    "the value");
     registerMessage(MSGID_BACKUPINFO_NO_NAME,
                     "The line \"%s\" associated with the backup information " +
                     "in directory %s could not be parsed because it did not " +
-                    "include a property name.");
+                    "include a property name");
     registerMessage(MSGID_BACKUPINFO_MULTIPLE_BACKUP_IDS,
                     "The backup information structure in directory %s could " +
                     "not be parsed because it contained multiple backup IDs " +
-                    "(%s and %s).");
+                    "(%s and %s)");
     registerMessage(MSGID_BACKUPINFO_UNKNOWN_PROPERTY,
                     "The backup information structure in directory %s could " +
                     "not be parsed because it contained an unknown property " +
-                    "%s with value %s.");
+                    "%s with value %s");
     registerMessage(MSGID_BACKUPINFO_CANNOT_DECODE,
                     "An unexpected error occurred while trying to decode a " +
-                    "backup information structure in directory %s:  %s.");
+                    "backup information structure in directory %s:  %s");
     registerMessage(MSGID_BACKUPINFO_NO_BACKUP_ID,
                     "Unable to decode a backup information structure in " +
                     "directory %s because the structure did not include a " +
-                    "backup ID.");
+                    "backup ID");
     registerMessage(MSGID_BACKUPINFO_NO_BACKUP_DATE,
                     "The backup information structure with backup ID %s in " +
                     "Unable to decode a backup information structure in " +
                     "directory %s was not valid because it did not contain " +
-                    "the backup date.");
+                    "the backup date");
 
 
     registerMessage(MSGID_BACKUPDIRECTORY_ADD_DUPLICATE_ID,
                     "Cannot add a backup with ID %s to backup directory %s " +
-                    "because another backup already exists with that ID.");
+                    "because another backup already exists with that ID");
     registerMessage(MSGID_BACKUPDIRECTORY_NO_SUCH_BACKUP,
                     "Cannot remove backup %s from backup directory %s " +
-                    "because no backup with that ID exists in that directory.");
+                    "because no backup with that ID exists in that directory");
     registerMessage(MSGID_BACKUPDIRECTORY_UNRESOLVED_DEPENDENCY,
                     "Cannot remove backup %s from backup directory %s " +
-                    "because it is listed as a dependency for backup %s.");
+                    "because it is listed as a dependency for backup %s");
     registerMessage(MSGID_BACKUPDIRECTORY_CANNOT_CREATE_DIRECTORY,
                     "Backup directory %s does not exist and an error " +
-                    "occurred while attempting to create it:  %s.");
+                    "occurred while attempting to create it:  %s");
     registerMessage(MSGID_BACKUPDIRECTORY_NOT_DIRECTORY,
                     "The path %s specifies as a backup directory exists but " +
-                    "does not reference a directory.");
+                    "does not reference a directory");
     registerMessage(MSGID_BACKUPDIRECTORY_CANNOT_DELETE_SAVED_DESCRIPTOR,
                     "An error occurred while trying to remove saved backup " +
                     "descriptor file %s:  %s.  The new backup descriptor " +
                     "has been written to %s but will not be used until it is " +
-                    "manually renamed to %s.");
+                    "manually renamed to %s");
     registerMessage(MSGID_BACKUPDIRECTORY_CANNOT_RENAME_CURRENT_DESCRIPTOR,
                     "An error occurred while trying to rename the current " +
                     "backup descriptor file %s to %s:  %s.  The new backup " +
                     "descriptor has been written to %s but will not be used " +
-                    "until it is manually renamed to %s.");
+                    "until it is manually renamed to %s");
     registerMessage(MSGID_BACKUPDIRECTORY_CANNOT_RENAME_NEW_DESCRIPTOR,
                     "An error occurred while trying to rename the new backup " +
                     "descriptor file %s to %s:  %s.  The new backup " +
                     "descriptor will not be used until it is manually " +
-                    "renamed.");
+                    "renamed");
     registerMessage(MSGID_BACKUPDIRECTORY_NO_DESCRIPTOR_FILE,
-                    "No backup directory descriptor file was found at %s.");
+                    "No backup directory descriptor file was found at %s");
     registerMessage(MSGID_BACKUPDIRECTORY_CANNOT_READ_CONFIG_ENTRY_DN,
                     "The backup descriptor file %s is invalid because the " +
                     "first line should have contained the DN of the backend " +
-                    "configuration entry but was blank.");
+                    "configuration entry but was blank");
     registerMessage(MSGID_BACKUPDIRECTORY_FIRST_LINE_NOT_DN,
                     "The backup descriptor file %s is invalid because the " +
                     "first line of the file was \"%s\", but the DN of the " +
-                    "backend configuration entry was expected.");
+                    "backend configuration entry was expected");
     registerMessage(MSGID_BACKUPDIRECTORY_CANNOT_DECODE_DN,
                     "An error occurred while trying to decode the value " +
                     "\"%s\" read from the first line of %s as the DN of " +
-                    "the backend configuration entry:  %s.");
+                    "the backend configuration entry:  %s");
 
 
     registerMessage(MSGID_FILELOCKER_LOCK_SHARED_REJECTED_BY_EXCLUSIVE,
                     "The attempt to obtain a shared lock on file %s was " +
                     "rejected because an exclusive lock was already held on " +
-                    "that file.");
+                    "that file");
     registerMessage(MSGID_FILELOCKER_LOCK_SHARED_FAILED_CREATE,
                     "The attempt to obtain a shared lock on file %s was " +
                     "rejected because the attempt to create the lock file " +
-                    "failed:  %s.");
+                    "failed:  %s");
     registerMessage(MSGID_FILELOCKER_LOCK_SHARED_FAILED_OPEN,
                     "The attempt to obtain a shared lock on file %s was " +
                     "rejected because the attempt to open the lock file " +
-                    "failed:  %s.");
+                    "failed:  %s");
     registerMessage(MSGID_FILELOCKER_LOCK_SHARED_FAILED_LOCK,
                     "The attempt to obtain a shared lock on file %s was " +
                     "rejected because an error occurred while attempting to " +
-                    "acquire the lock:  %s.");
+                    "acquire the lock:  %s");
     registerMessage(MSGID_FILELOCKER_LOCK_SHARED_NOT_GRANTED,
                     "The shared lock requested for file %s was not granted, " +
                     "which indicates that another process already holds an "+
-                    "exclusive lock on that file.");
+                    "exclusive lock on that file");
     registerMessage(MSGID_FILELOCKER_LOCK_EXCLUSIVE_REJECTED_BY_EXCLUSIVE,
                     "The attempt to obtain an exclusive lock on file %s was " +
                     "rejected because an exclusive lock was already held on " +
-                    "that file.");
+                    "that file");
     registerMessage(MSGID_FILELOCKER_LOCK_EXCLUSIVE_REJECTED_BY_SHARED,
                     "The attempt to obtain an exclusive lock on file %s was " +
                     "rejected because a shared lock was already held on that " +
-                    "file.");
+                    "file");
     registerMessage(MSGID_FILELOCKER_LOCK_EXCLUSIVE_FAILED_CREATE,
                     "The attempt to obtain an exclusive lock on file %s was " +
                     "rejected because the attempt to create the lock file " +
-                    "failed:  %s.");
+                    "failed:  %s");
     registerMessage(MSGID_FILELOCKER_LOCK_EXCLUSIVE_FAILED_OPEN,
                     "The attempt to obtain an exclusive lock on file %s was " +
                     "rejected because the attempt to open the lock file " +
-                    "failed:  %s.");
+                    "failed:  %s");
     registerMessage(MSGID_FILELOCKER_LOCK_EXCLUSIVE_FAILED_LOCK,
                     "The attempt to obtain an exclusive lock on file %s was " +
                     "rejected because an error occurred while attempting to " +
-                    "acquire the lock:  %s.");
+                    "acquire the lock:  %s");
     registerMessage(MSGID_FILELOCKER_LOCK_EXCLUSIVE_NOT_GRANTED,
                     "The exclusive lock requested for file %s was not " +
                     "granted, which indicates that another process already " +
-                    "holds a shared or exclusive lock on that file.");
+                    "holds a shared or exclusive lock on that file");
     registerMessage(MSGID_FILELOCKER_UNLOCK_EXCLUSIVE_FAILED_RELEASE,
                     "The attempt to release the exclusive lock held on %s " +
-                    "failed:  %s.");
+                    "failed:  %s");
     registerMessage(MSGID_FILELOCKER_UNLOCK_SHARED_FAILED_RELEASE,
                     "The attempt to release the shared lock held on %s " +
-                    "failed:  %s.");
+                    "failed:  %s");
     registerMessage(MSGID_FILELOCKER_UNLOCK_UNKNOWN_FILE,
                     "The attempt to release the lock held on %s failed " +
-                    "because no record of a lock on that file was found.");
+                    "because no record of a lock on that file was found");
     registerMessage(MSGID_ADD_ENTRY_ALREADY_EXISTS,
                     "The entry %s cannot be added because an entry with " +
-                    "that name already exists.");
+                    "that name already exists");
 
 
     registerMessage(MSGID_ADD_SYNCH_CONFLICT_RESOLUTION_FAILED,
                     "An error occurred during conflict resolution " +
                     "synchronization processing for the add operation with " +
-                    "connection ID %d and operation ID %d:  %s.");
+                    "connection ID %d and operation ID %d:  %s");
     registerMessage(MSGID_ADD_SYNCH_PREOP_FAILED,
                     "An error occurred during preoperation synchronization " +
                     "processing for the add operation with connection ID %d " +
-                    "and operation ID %d:  %s.");
+                    "and operation ID %d:  %s");
     registerMessage(MSGID_ADD_SYNCH_POSTOP_FAILED,
                     "An error occurred during postoperation synchronization " +
                     "processing for the add operation with connection ID %d " +
-                    "and operation ID %d:  %s.");
+                    "and operation ID %d:  %s");
     registerMessage(MSGID_DELETE_SYNCH_CONFLICT_RESOLUTION_FAILED,
                     "An error occurred during conflict resolution " +
                     "synchronization processing for the delete operation " +
-                    "with connection ID %d and operation ID %d:  %s.");
+                    "with connection ID %d and operation ID %d:  %s");
     registerMessage(MSGID_DELETE_SYNCH_PREOP_FAILED,
                     "An error occurred during preoperation synchronization " +
                     "processing for the delete operation with connection ID " +
-                    "%d and operation ID %d:  %s.");
+                    "%d and operation ID %d:  %s");
     registerMessage(MSGID_DELETE_SYNCH_POSTOP_FAILED,
                     "An error occurred during postoperation synchronization " +
                     "processing for the delete operation with connection ID " +
-                    "%d and operation ID %d:  %s.");
+                    "%d and operation ID %d:  %s");
     registerMessage(MSGID_MODIFY_SYNCH_CONFLICT_RESOLUTION_FAILED,
                     "An error occurred during conflict resolution " +
                     "synchronization processing for the modify operation " +
-                    "with connection ID %d and operation ID %d:  %s.");
+                    "with connection ID %d and operation ID %d:  %s");
     registerMessage(MSGID_MODIFY_SYNCH_PREOP_FAILED,
                     "An error occurred during preoperation synchronization " +
                     "processing for the modify operation with connection ID " +
-                    "%d and operation ID %d:  %s.");
+                    "%d and operation ID %d:  %s");
     registerMessage(MSGID_MODIFY_SYNCH_POSTOP_FAILED,
                     "An error occurred during postoperation synchronization " +
                     "processing for the modify operation with connection ID " +
-                    "%d and operation ID %d:  %s.");
+                    "%d and operation ID %d:  %s");
     registerMessage(MSGID_MODDN_SYNCH_CONFLICT_RESOLUTION_FAILED,
                     "An error occurred during conflict resolution " +
                     "synchronization processing for the modify DN operation " +
-                    "with connection ID %d and operation ID %d:  %s.");
+                    "with connection ID %d and operation ID %d:  %s");
     registerMessage(MSGID_MODDN_SYNCH_PREOP_FAILED,
                     "An error occurred during preoperation synchronization " +
                     "processing for the modify DN operation with connection " +
-                    "ID %d and operation ID %d:  %s.");
+                    "ID %d and operation ID %d:  %s");
     registerMessage(MSGID_MODDN_SYNCH_POSTOP_FAILED,
                     "An error occurred during postoperation synchronization " +
                     "processing for the modify DN operation with connection " +
-                    "ID %d and operation ID %d:  %s.");
+                    "ID %d and operation ID %d:  %s");
 
 
     registerMessage(MSGID_ADD_SERVER_READONLY,
                     "Unable to add entry %s because the Directory Server " +
-                    "is configured in read-only mode.");
+                    "is configured in read-only mode");
     registerMessage(MSGID_ADD_BACKEND_READONLY,
                     "Unable to add entry %s because the backend that should " +
-                    "hold that entry is configured in read-only mode.");
+                    "hold that entry is configured in read-only mode");
     registerMessage(MSGID_DELETE_SERVER_READONLY,
                     "Unable to delete entry %s because the Directory Server " +
-                    "is configured in read-only mode.");
+                    "is configured in read-only mode");
     registerMessage(MSGID_DELETE_BACKEND_READONLY,
                     "Unable to delete entry %s because the backend that " +
-                    "holds that entry is configured in read-only mode.");
+                    "holds that entry is configured in read-only mode");
     registerMessage(MSGID_MODIFY_SERVER_READONLY,
                     "Unable to modify entry %s because the Directory Server " +
-                    "is configured in read-only mode.");
+                    "is configured in read-only mode");
     registerMessage(MSGID_MODIFY_BACKEND_READONLY,
                     "Unable to modify entry %s because the backend that " +
-                    "holds that entry is configured in read-only mode.");
+                    "holds that entry is configured in read-only mode");
     registerMessage(MSGID_MODDN_SERVER_READONLY,
                     "Unable to rename entry %s because the Directory Server " +
-                    "is configured in read-only mode.");
+                    "is configured in read-only mode");
     registerMessage(MSGID_MODDN_BACKEND_READONLY,
                     "Unable to rename entry %s because the backend that " +
-                    "holds that entry is configured in read-only mode.");
+                    "holds that entry is configured in read-only mode");
 
 
     registerMessage(MSGID_PWPOLICY_NO_PASSWORD_ATTRIBUTE,
                     "The password policy configuration entry \"%s\" does not " +
                     "contain a value for attribute " +
                     ATTR_PWPOLICY_PASSWORD_ATTRIBUTE + ", which specifies " +
-                    "the attribute to hold user passwords.");
+                    "the attribute to hold user passwords");
     registerMessage(MSGID_PWPOLICY_NO_DEFAULT_STORAGE_SCHEMES,
                     "The password policy configuration entry \"%s\" does not " +
                     "contain any values for attribute " +
                     ATTR_PWPOLICY_DEFAULT_SCHEME + ", which specifies " +
-                    "the set of default password storage schemes.");
+                    "the set of default password storage schemes");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_PW_ATTR,
                     "Specifies the attribute type used to hold user " +
                     "passwords.  This attribute type must be defined in the " +
                     "server schema.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_PWPOLICY_UNDEFINED_PASSWORD_ATTRIBUTE,
                     "The password policy definition contained in " +
                     "configuration entry \"%s\" is invalid because the " +
                     "specified password attribute \"%s\" is not defined in " +
-                    "the server schema.");
+                    "the server schema");
     registerMessage(MSGID_PWPOLICY_INVALID_PASSWORD_ATTRIBUTE_SYNTAX,
                     "The password policy definition contained in " +
                     "configuration entry \"%s\" is invalid because the " +
@@ -7583,11 +7583,11 @@
                     "%s.  The password attribute must have a syntax OID of " +
                     "either " + SYNTAX_USER_PASSWORD_OID + " (for the user " +
                     "password syntax) or " + SYNTAX_AUTH_PASSWORD_OID +
-                    " (for the authentication password syntax).");
+                    " (for the authentication password syntax)");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_PASSWORD_ATTRIBUTE,
                     "An error occurred while attempting to determine the " +
                     "value of attribute " + ATTR_PWPOLICY_PASSWORD_ATTRIBUTE +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_DEFAULT_STORAGE_SCHEMES,
                     "Specifies the password storage scheme (or set of " +
                     "schemes) that will be used to encode clear-text " +
@@ -7595,16 +7595,16 @@
                     "defined for a password policy, then the same password " +
                     "will be encoded using all of those schemes.  Changes to " +
                     "this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_PWPOLICY_NO_SUCH_DEFAULT_SCHEME,
                     "The password policy definition contained in " +
                     "configuration entry \"%s\" is invalid because it " +
                     "references a default password storage scheme \"%s\" " +
-                    "that is not defined in the server configuration.");
+                    "that is not defined in the server configuration");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_DEFAULT_STORAGE_SCHEMES,
                     "An error occurred while attempting to determine the " +
                     "values for attribute " + ATTR_PWPOLICY_DEFAULT_SCHEME +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_DEPRECATED_STORAGE_SCHEMES,
                     "Specifies the password storage scheme (or set of " +
                     "schemes) that should be considered deprecated.  If an " +
@@ -7612,96 +7612,96 @@
                     "these schemes, those passwords will be removed and " +
                     "replaced with passwords encoded using the default " +
                     "schemes.  Changes to this configuration attribute " +
-                    "will take effect immediately.");
+                    "will take effect immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_DEPRECATED_STORAGE_SCHEMES,
                     "An error occurred while attempting to determine the " +
                     "values for attribute " + ATTR_PWPOLICY_DEPRECATED_SCHEME +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_PASSWORD_VALIDATORS,
                     "Specifies the DN(s) of the password validator(s) that " +
                     "should be used with the associated password storage " +
                     "scheme.  Changes to this configuration attribute will " +
-                    "take effect immediately.");
+                    "take effect immediately");
     registerMessage(MSGID_PWPOLICY_NO_SUCH_VALIDATOR,
                     "The password policy definition contained in " +
                     "configuration entry \"%s\" is invalid because it " +
                     "references a password validator \"%s\" that is not " +
-                    "defined in the server configuration.");
+                    "defined in the server configuration");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_PASSWORD_VALIDATORS,
                     "An error occurred while attempting to determine the " +
                     "values for attribute " + ATTR_PWPOLICY_PASSWORD_VALIDATOR +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_NOTIFICATION_HANDLERS,
                     "Specifies the DN(s) of the account status notification " +
                     "handler(s) that should be used with the associated " +
                     "password storage scheme.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_PWPOLICY_NO_SUCH_NOTIFICATION_HANDLER,
                     "The password policy definition contained in " +
                     "configuration entry \"%s\" is invalid because it " +
                     "references account status notification handler \"%s\" " +
-                    "that is not defined in the server configuration.");
+                    "that is not defined in the server configuration");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_NOTIFICATION_HANDLERS,
                     "An error occurred while attempting to determine the " +
                     "values for attribute " +
                     ATTR_PWPOLICY_NOTIFICATION_HANDLER +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_ALLOW_USER_PW_CHANGES,
                     "Indicates whether users will be allowed to change " +
                     "their own passwords.  This check is made in addition " +
                     "to access control evaluation, and therefore both must " +
                     "allow the password change for it to occur.  Changes to " +
                     "this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_ALLOW_USER_PW_CHANGES,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " + ATTR_PWPOLICY_ALLOW_USER_CHANGE +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_REQUIRE_CURRENT_PW,
                     "Indicates whether user password changes will be " +
                     "required to use the password modify extended operation " +
                     "and include the user's current password before the " +
                     "change will be allowed.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_REQUIRE_CURRENT_PW,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " + ATTR_PWPOLICY_ALLOW_USER_CHANGE +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_FORCE_CHANGE_ON_ADD,
                     "Indicates whether users will be forced to change their " +
                     "passwords upon first authenticating to the Directory " +
                     "Server after their account has been created.  Changes " +
                     "to this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_FORCE_CHANGE_ON_ADD,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " +
                     ATTR_PWPOLICY_FORCE_CHANGE_ON_ADD +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_FORCE_CHANGE_ON_RESET,
                     "Indicates whether users will be forced to change their " +
                     "passwords if they are reset by an administrator.  " +
                     "For this purpose, anyone with permission to change a " +
                     "given user's password other than that user will be " +
                     "considered an administrator.  Changes to this " +
-                    "configuration attribute will take effect immediately.");
+                    "configuration attribute will take effect immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_FORCE_CHANGE_ON_RESET,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " +
                     ATTR_PWPOLICY_FORCE_CHANGE_ON_RESET +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_SKIP_ADMIN_VALIDATION,
                     "Indicates whether passwords set by administrators (in " +
                     "add, modify, or password modify operations) will be " +
                     "allowed to bypass the password validation process that " +
                     "will be required for user password changes.  Changes to " +
                     "this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_SKIP_ADMIN_VALIDATION,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " +
                     ATTR_PWPOLICY_SKIP_ADMIN_VALIDATION +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_PASSWORD_GENERATOR,
                     "Specifies the DN of the configuration entry that " +
                     "references the password generator for use with the " +
@@ -7709,16 +7709,16 @@
                     "conjunction with the password modify extended operation " +
                     "to generate a new password for a user when none was " +
                     "provided in the request.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_PWPOLICY_NO_SUCH_GENERATOR,
                     "The password policy definition contained in " +
                     "configuration entry \"%s\" is invalid because it " +
                     "references password generator \"%s\" that is not " +
-                    "defined in the server configuration.");
+                    "defined in the server configuration");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_PASSWORD_GENERATOR,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " + ATTR_PWPOLICY_PASSWORD_GENERATOR +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_REQUIRE_SECURE_AUTH,
                     "Indicates whether users with the associated password " +
                     "policy will be required to authenticate in a secure " +
@@ -7726,23 +7726,23 @@
                     "communication channel between the client and the " +
                     "server, or using a SASL mechanism that does not expose " +
                     "the credentials.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_REQUIRE_SECURE_AUTH,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " +
                     ATTR_PWPOLICY_REQUIRE_SECURE_AUTHENTICATION +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_REQUIRE_SECURE_CHANGES,
                     "Indicates whether users with the associated password " +
                     "policy will be required to change their password in " +
                     "a secure manner that does not expose the credentials.  " +
                     "Changes to this configuration attribute will take " +
-                    "effect immediately.");
+                    "effect immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_REQUIRE_SECURE_CHANGES,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " +
                     ATTR_PWPOLICY_REQUIRE_SECURE_PASSWORD_CHANGES +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_ALLOW_MULTIPLE_PW_VALUES,
                     "Indicates whether user entries will be allowed to have " +
                     "multiple distinct values for the password attribute.  " +
@@ -7752,24 +7752,24 @@
                     "allowed, then any of them may be used to authenticate, " +
                     "and they will all be subject to the same policy " +
                     "constraints.  Changes to this configuration attribute " +
-                    "will take effect immediately.");
+                    "will take effect immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_ALLOW_MULTIPLE_PW_VALUES,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " +
                     ATTR_PWPOLICY_ALLOW_MULTIPLE_PW_VALUES +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_ALLOW_PREENCODED,
                     "Indicates whether users will be allowed to change their " +
                     "passwords by providing a pre-encoded value.  This can " +
                     "cause a security risk because the clear-text version of " +
                     "the password is not known and therefore validation " +
                     "checks cannot be applied to it.  Changes to this " +
-                    "configuration attribute will take effect immediately.");
+                    "configuration attribute will take effect immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_ALLOW_PREENCODED,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " +
                     ATTR_PWPOLICY_ALLOW_PRE_ENCODED_PASSWORDS +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_MIN_AGE,
                     "Specifies the minimum length of time that must pass " +
                     "after a password change before the user will be allowed " +
@@ -7780,12 +7780,12 @@
                     "passwords repeatedly over a short period of time to " +
                     "flush and old password from the history so that it may " +
                     "be re-used.  Changes to this configuration attribute " +
-                    "will take effect immediately.");
+                    "will take effect immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_MIN_AGE,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " +
                     ATTR_PWPOLICY_MINIMUM_PASSWORD_AGE +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_MAX_AGE,
                     "Specifies the maximum length of time that a user may " +
                     "continue using the same password before it must be " +
@@ -7794,12 +7794,12 @@
                     "by a unit of seconds, minutes, hours, days, or weeks.  " +
                     "A value of 0 seconds will disable password expiration.  " +
                     "Changes to this configuration attribute will take " +
-                    "effect immediately.");
+                    "effect immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_MAX_AGE,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " +
                     ATTR_PWPOLICY_MAXIMUM_PASSWORD_AGE +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_MAX_RESET_AGE,
                     "Specifies the maximum length of time that users have to " +
                     "change passwords after they have been reset by an " +
@@ -7808,12 +7808,12 @@
                     "unit of seconds, minutes, hours, days, or weeks.  A " +
                     "value of 0 seconds will disable this feature.  Changes " +
                     "to this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_MAX_RESET_AGE,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " +
                     ATTR_PWPOLICY_MAXIMUM_PASSWORD_RESET_AGE +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_WARNING_INTERVAL,
                     "Specifies the maximum length of time before a user's " +
                     "password actually expires that the server will begin " +
@@ -7822,11 +7822,11 @@
                     "integer followed by a unit of seconds, minutes, hours, " +
                     "days, or weeks.  A value of 0 seconds will disable " +
                     "the warning interval.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_WARNING_INTERVAL,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " + ATTR_PWPOLICY_WARNING_INTERVAL +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_EXPIRE_WITHOUT_WARNING,
                     "Indicates whether the Directory Server should allow " +
                     "a user's password to expire even if that user has " +
@@ -7837,12 +7837,12 @@
                     "one warning notification, and the password expiration " +
                     "will be set to the warning time plus the warning " +
                     "interval.  Changes to this configuration attribute " +
-                    "will take effect immediately.");
+                    "will take effect immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_EXPIRE_WITHOUT_WARNING,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " +
                     ATTR_PWPOLICY_EXPIRE_WITHOUT_WARNING +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(
          MSGID_PWPOLICY_MUST_HAVE_WARNING_IF_NOT_EXPIRE_WITHOUT_WARNING,
          "The password policy defined in configuration entry %s is " +
@@ -7850,41 +7850,41 @@
          "the password is expired, but no warning interval has been set.  " +
          "If configuration attribute " + ATTR_PWPOLICY_EXPIRE_WITHOUT_WARNING +
          " is set to \"false\", then configuration attribute " +
-         ATTR_PWPOLICY_WARNING_INTERVAL + " must have a positive value.");
+         ATTR_PWPOLICY_WARNING_INTERVAL + " must have a positive value");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_ALLOW_EXPIRED_CHANGES,
                     "Indicates whether a user whose password is expired " +
                     "will still be allowed to change that password using " +
                     "the password modify extended operation.  Changes to " +
                     "this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_ALLOW_EXPIRED_CHANGES,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " +
                     ATTR_PWPOLICY_ALLOW_EXPIRED_CHANGES +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_GRACE_LOGIN_COUNT,
                     "Specifies the number of grace logins that a user will " +
                     "be allowed after the account has expired to allow that " +
                     "user to choose a new password.  A value of 0 " +
                     "indicates that no grace logins will be allowed.  " +
                     "Changes to this configuration attribute will take " +
-                    "effect immediately.");
+                    "effect immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_GRACE_LOGIN_COUNT,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " + ATTR_PWPOLICY_GRACE_LOGIN_COUNT +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_LOCKOUT_FAILURE_COUNT,
                     "Specifies the maximum number of authentication failures " +
                     "that a user should be allowed before the account is " +
                     "locked out.  A value of 0 indicates that accounts " +
                     "should never be locked out due to failed attempts.  " +
                     "changes to this configuration attribute will take " +
-                    "effect immediately.");
+                    "effect immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_LOCKOUT_FAILURE_COUNT,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " +
                     ATTR_PWPOLICY_LOCKOUT_FAILURE_COUNT +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_LOCKOUT_DURATION,
                     "Specifies the length of time that an account should be " +
                     "locked after too many authentication failures.  The " +
@@ -7893,11 +7893,11 @@
                     "A value of 0 seconds indicates that the account should " +
                     "remain locked until an administrator resets the " +
                     "password.  Changes to this configuration attribute " +
-                    "will take effect immediately.");
+                    "will take effect immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_LOCKOUT_DURATION,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " + ATTR_PWPOLICY_LOCKOUT_DURATION +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_FAILURE_EXPIRATION,
                     "Specifies the length of time that should pass before " +
                     "an authentication failure is no longer counted against " +
@@ -7908,12 +7908,12 @@
                     "failures should never expire.  The failure count will " +
                     "always be cleared upon a successful authentication.  " +
                     "Changes to this configuration attribute will take " +
-                    "effect immediately.");
+                    "effect immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_FAILURE_EXPIRATION,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " +
                     ATTR_PWPOLICY_LOCKOUT_FAILURE_EXPIRATION_INTERVAL +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_REQUIRE_CHANGE_BY_TIME,
                     "Specifies the time by which all users with the " +
                     "associated password policy must change their " +
@@ -7925,12 +7925,12 @@
                     "to the behavior observed when users are forced to " +
                     "change their passwords after an administrative reset.  " +
                     "Changes to this configuration attribute will take " +
-                    "effect immediately.");
+                    "effect immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_REQUIRE_CHANGE_BY_TIME,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " +
                     ATTR_PWPOLICY_REQUIRE_CHANGE_BY_TIME +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_LAST_LOGIN_TIME_ATTR,
                     "Specifies the name or OID of the attribute type that "+
                     "should be used to hold the last login time for users " +
@@ -7940,17 +7940,17 @@
                     "must be allowed by the set of objectClasses for all " +
                     "users with the associated password policy.  Changes to " +
                     "this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_PWPOLICY_UNDEFINED_LAST_LOGIN_TIME_ATTRIBUTE,
                     "The password policy definition contained in " +
                     "configuration entry \"%s\" is invalid because the " +
                     "specified last login time attribute \"%s\" is not " +
-                    "defined in the server schema.");
+                    "defined in the server schema");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_LAST_LOGIN_TIME_ATTR,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " +
                     ATTR_PWPOLICY_LAST_LOGIN_TIME_ATTRIBUTE +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_LAST_LOGIN_TIME_FORMAT,
                     "Specifies the format string that should be used to " +
                     "generate the last login time value for users with the " +
@@ -7959,7 +7959,7 @@
                     "documentation for the " +
                     "<CODE>java.text.SimpleDateFormat</CODE> class.  Changes " +
                     "to this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_PWPOLICY_INVALID_LAST_LOGIN_TIME_FORMAT,
                     "The password policy definition contained in " +
                     "configuration entry \"%s\" is invalid because the " +
@@ -7967,12 +7967,12 @@
                     "a valid format string  The last login time format " +
                     "string should conform to the syntax described in the " +
                     "API documentation for the " +
-                    "<CODE>java.text.SimpleDateFormat</CODE> class.");
+                    "<CODE>java.text.SimpleDateFormat</CODE> class");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_LAST_LOGIN_TIME_FORMAT,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " +
                     ATTR_PWPOLICY_LAST_LOGIN_TIME_FORMAT +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_PREVIOUS_LAST_LOGIN_TIME_FORMAT,
                     "Specifies the format string(s) that may have been " +
                     "used with the last login time at any point in the " +
@@ -7983,7 +7983,7 @@
                     "syntax described in the API documentation for the " +
                     "<CODE>java.text.SimpleDateFormat</CODE> class.  Changes " +
                     "to this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_PWPOLICY_INVALID_PREVIOUS_LAST_LOGIN_TIME_FORMAT,
                     "The password policy definition contained in " +
                     "configuration entry \"%s\" is invalid because the " +
@@ -7991,12 +7991,12 @@
                     "a valid format string  The previous last login time " +
                     "format strings should conform to the syntax described " +
                     "in the API documentation for the " +
-                    "<CODE>java.text.SimpleDateFormat</CODE> class.");
+                    "<CODE>java.text.SimpleDateFormat</CODE> class");
     registerMessage(
          MSGID_PWPOLICY_CANNOT_DETERMINE_PREVIOUS_LAST_LOGIN_TIME_FORMAT,
          "An error occurred while attempting to determine the values for " +
          "attribute " + ATTR_PWPOLICY_PREVIOUS_LAST_LOGIN_TIME_FORMAT +
-         " in configuration entry %s:  %s.");
+         " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_DESCRIPTION_IDLE_LOCKOUT_INTERVAL,
                     "Specifies the maximum length of time that an account " +
                     "may remain idle (i.e., the associated user does not" +
@@ -8007,174 +8007,174 @@
                     "accounts should not automatically be locked out.  This " +
                     "feature will only be available if the last login time " +
                     "is maintained.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_PWPOLICY_CANNOT_DETERMINE_IDLE_LOCKOUT_INTERVAL,
                     "An error occurred while attempting to determine the " +
                     "value for attribute " +
                     ATTR_PWPOLICY_IDLE_LOCKOUT_INTERVAL +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_PWPOLICY_UPDATED_POLICY,
                     "The password policy defined in configuration entry %s " +
-                    "has been successfully updated.");
+                    "has been successfully updated");
     registerMessage(MSGID_PWPOLICY_ATTRIBUTE_OPTIONS_NOT_ALLOWED,
                     "Attribute options are not allowed for the password " +
-                    "attribute %s.");
+                    "attribute %s");
     registerMessage(MSGID_PWPOLICY_MULTIPLE_PW_VALUES_NOT_ALLOWED,
                     "Only a single value may be provided for the password " +
-                    "attribute %s.");
+                    "attribute %s");
     registerMessage(MSGID_PWPOLICY_PREENCODED_NOT_ALLOWED,
                     "Pre-encoded passwords are not allowed for the password " +
-                    "attribute %s.");
+                    "attribute %s");
     registerMessage(MSGID_PWPOLICY_VALIDATION_FAILED,
                     "The password value for attribute %s was found to be " +
-                    "unacceptable:  %s.");
+                    "unacceptable:  %s");
 
 
     registerMessage(MSGID_ENQUEUE_BIND_IN_PROGRESS,
                     "A bind operation is currently in progress on the " +
                     "associated client connection.  No other requests may " +
                     "be made on this client connection until the bind " +
-                    "processing has completed.");
+                    "processing has completed");
     registerMessage(MSGID_ENQUEUE_MUST_CHANGE_PASSWORD,
                     "You must change your password before you will be " +
-                    "allowed to request any other operations.");
+                    "allowed to request any other operations");
 
 
     registerMessage(MSGID_PWPSTATE_CANNOT_DECODE_SUBENTRY_VALUE_AS_DN,
                     "An error occurred while attempting to decode the " +
                     OP_ATTR_PWPOLICY_POLICY_DN + " value \"%s\" in user " +
-                    "entry \"%s\" as a DN:  %s.");
+                    "entry \"%s\" as a DN:  %s");
     registerMessage(MSGID_PWPSTATE_NO_SUCH_POLICY,
                     "User entry %s is configured to use a password policy " +
                     "subentry of %s but no such password policy has been " +
-                    "defined in the server configuration.");
+                    "defined in the server configuration");
     registerMessage(MSGID_PWPSTATE_CANNOT_DECODE_GENERALIZED_TIME,
                     "An error occurred while attempting to decode value " +
                     "\"%s\" for attribute %s in user entry %s in accordance " +
-                    "with the generalized time format:  %s.");
+                    "with the generalized time format:  %s");
     registerMessage(MSGID_PWPSTATE_CANNOT_DECODE_BOOLEAN,
                     "Unable to decode value \"%s\" for attribute %s in user " +
-                    "entry %s as a Boolean value.");
+                    "entry %s as a Boolean value");
     registerMessage(MSGID_PWPSTATE_CANNOT_UPDATE_USER_ENTRY,
                     "An error occurred while attempting to update password " +
-                    "policy state information for user %s:  %s.");
+                    "policy state information for user %s:  %s");
 
     registerMessage(MSGID_ADD_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS,
-        "The entry %s cannot be added due to insufficient access rights.");
+        "The entry %s cannot be added due to insufficient access rights");
     registerMessage(MSGID_BIND_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS,
-        "The user %s cannot bind due to insufficient access rights.");
+        "The user %s cannot bind due to insufficient access rights");
     registerMessage(MSGID_COMPARE_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS,
-        "The entry %s cannot be compared due to insufficient access rights.");
+        "The entry %s cannot be compared due to insufficient access rights");
     registerMessage(MSGID_DELETE_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS,
-        "The entry %s cannot be deleted due to insufficient access rights.");
+        "The entry %s cannot be deleted due to insufficient access rights");
     registerMessage(MSGID_EXTENDED_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS,
         "The extended operation %s cannot be performed "
-            + "due to insufficient access rights.");
+            + "due to insufficient access rights");
     registerMessage(MSGID_MODDN_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS,
-        "The entry %s cannot be renamed due to insufficient access rights.");
+        "The entry %s cannot be renamed due to insufficient access rights");
     registerMessage(MSGID_MODIFY_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS,
-        "The entry %s cannot be modified due to insufficient access rights.");
+        "The entry %s cannot be modified due to insufficient access rights");
     registerMessage(MSGID_SEARCH_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS,
-        "The entry %s cannot be searched due to insufficient access rights.");
+        "The entry %s cannot be searched due to insufficient access rights");
 
 
     registerMessage(MSGID_BIND_OPERATION_INSECURE_SIMPLE_BIND,
                     "Rejecting a simple bind request for user %s because the " +
-                    "password policy requires secure authentication.");
+                    "password policy requires secure authentication");
     registerMessage(MSGID_BIND_OPERATION_ACCOUNT_DISABLED,
                     "Rejecting a bind request for user %s because the " +
-                    "account has been administrative disabled.");
+                    "account has been administrative disabled");
     registerMessage(MSGID_BIND_OPERATION_ACCOUNT_EXPIRED,
                     "Rejecting a bind request for user %s because the " +
-                    "account has expired.");
+                    "account has expired");
     registerMessage(MSGID_BIND_OPERATION_ACCOUNT_FAILURE_LOCKED,
                     "Rejecting a bind request for user %s because the " +
                     "account has been locked due to too many failed " +
-                    "authentication attempts.");
+                    "authentication attempts");
     registerMessage(MSGID_BIND_OPERATION_ACCOUNT_RESET_LOCKED,
                     "Rejecting a bind request for user %s because the " +
                     "account has been locked after the user's password was " +
                     "not changed in a timely manner after an administrative " +
-                    "reset.");
+                    "reset");
     registerMessage(MSGID_BIND_OPERATION_ACCOUNT_IDLE_LOCKED,
                     "Rejecting a bind request for user %s because the " +
                     "account has been locked after remaining idle for too " +
-                    "long.");
+                    "long");
     registerMessage(MSGID_BIND_OPERATION_PASSWORD_EXPIRED,
                     "Rejecting a bind request for user %s because that " +
-                    "user's password is expired.");
+                    "user's password is expired");
     registerMessage(MSGID_BIND_OPERATION_INSECURE_SASL_BIND,
                     "Rejecting a SASL %s bind request for user %s because " +
-                    "the password policy requires secure authentication.");
+                    "the password policy requires secure authentication");
 
 
     registerMessage(MSGID_WORKQ_CANNOT_PARSE_DN,
                     "An error occurred while attempting to parse string %s " +
-                    "as the DN of the work queue configuration entry:  %s.");
+                    "as the DN of the work queue configuration entry:  %s");
     registerMessage(MSGID_WORKQ_NO_CONFIG,
                     "Work queue configuration entry %s does not exist in " +
-                    "the server configuration.");
+                    "the server configuration");
     registerMessage(MSGID_WORKQ_DESCRIPTION_CLASS,
                     "Specifies the fully-qualified name of the Java class " +
                     "that provides the core work queue logic for the " +
                     "Directory Server.  Changes to this configuration " +
                     "attribute require that the server be restarted for the " +
-                    "change to take effect.");
+                    "change to take effect");
     registerMessage(MSGID_WORKQ_NO_CLASS_ATTR,
                     "Configuration entry %s does not contain required " +
                     "attribute %s that specifies the fully-qualified class " +
-                    "name for the work queue implementation.");
+                    "name for the work queue implementation");
     registerMessage(MSGID_WORKQ_CANNOT_LOAD,
                     "An error occurred while trying to load class %s to use " +
-                    "as the Directory Server work queue implementation:  %s.");
+                    "as the Directory Server work queue implementation:  %s");
     registerMessage(MSGID_WORKQ_CANNOT_INSTANTIATE,
                     "An error occured while trying to create an instance " +
                     "of class %s to use as the Directory Server work queue:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_BIND_MULTIPLE_USER_LOOKTHROUGH_LIMITS,
                     "There are multiple user-specific lookthrough limit " +
                     "values contained in user entry %s.  The default server " +
-                    "lookthrough limit will be used.");
+                    "lookthrough limit will be used");
     registerMessage(MSGID_BIND_CANNOT_PROCESS_USER_LOOKTHROUGH_LIMIT,
                     "The user-specific lookthrough limit value %s contained " +
                     "in user entry %s could not be parsed as an integer.  " +
-                    "The default server lookthrough limit will be used.");
+                    "The default server lookthrough limit will be used");
 
 
     registerMessage(MSGID_REGISTER_BACKEND_ALREADY_EXISTS,
                     "Unable to register backend %s with the Directory Server " +
                     "because another backend with the same backend ID is " +
-                    "already registered.");
+                    "already registered");
     registerMessage(MSGID_REGISTER_BASEDN_ALREADY_EXISTS,
                     "Unable to register base DN %s with the Directory Server " +
                     "for backend %s because that base DN is already " +
-                    "registered for backend %s.");
+                    "registered for backend %s");
     registerMessage(MSGID_REGISTER_BASEDN_HIERARCHY_CONFLICT,
                     "Unable to register base DN %s with the Directory Server " +
                     "for backend %s because that backend already contains " +
                     "another base DN %s that is within the same hierarchical " +
-                    "path.");
+                    "path");
     registerMessage(MSGID_REGISTER_BASEDN_DIFFERENT_PARENT_BASES,
                     "Unable to register base DN %s with the Directory Server " +
                     "for backend %s because that backend already contains " +
                     "another base DN %s that is not subordinate to the same " +
-                    "base DN in the parent backend.");
+                    "base DN in the parent backend");
     registerMessage(MSGID_REGISTER_BASEDN_NEW_BASE_NOT_SUBORDINATE,
                     "Unable to register base DN %s with the Directory Server " +
                     "for backend %s because that backend already contains " +
                     "one or more other base DNs that are subordinate to " +
-                    "backend %s but the new base DN is not.");
+                    "backend %s but the new base DN is not");
     registerMessage(MSGID_REGISTER_BASEDN_ENTRIES_IN_MULTIPLE_BACKENDS,
                     "Backend %s already contains entry %s which has just " +
                     "been registered as the base DN for backend %s.  " +
                     "These conflicting entries may cause unexpected or " +
                     "errant search results, and both backends should be " +
                     "reinitialized to ensure that each has the correct " +
-                    "content.");
+                    "content");
     registerMessage(MSGID_DEREGISTER_BASEDN_NOT_REGISTERED,
                     "Unable to de-register base DN %s with the Directory " +
                     "Server because that base DN is not registered for any " +
-                    "active backend.");
+                    "active backend");
     registerMessage(MSGID_DEREGISTER_BASEDN_MISSING_HIERARCHY,
                     "Base DN %s has been deregistered from the Directory " +
                     "Server for backend %s.  This base DN had both superior " +
@@ -8182,16 +8182,16 @@
                     "may be inconsistent or unexpected behavior when " +
                     "accessing entries in this portion of the hierarchy " +
                     "because of the missing entries that had been held in " +
-                    "the de-registered backend.");
+                    "the de-registered backend");
     registerMessage(MSGID_REJECT_UNAUTHENTICATED_OPERATION,
                      "Rejecting the requested operation  " +
-                     "because the connection has not been authenticated.");
+                     "because the connection has not been authenticated");
 
 
     registerMessage(MSGID_CLIENTCONNECTION_DISCONNECT_DUE_TO_DELETE,
                     "Terminating the client connection because its " +
                     "associated authentication or authorization entry %s has " +
-                    "been deleted.");
+                    "been deleted");
     registerMessage(MSGID_CLIENTCONNECTION_AUDIT_HASPRIVILEGE,
                     "hasPrivilege determination for connID=%d opID=%d " +
                     "requesterDN=\"%s\" privilege=\"%s\" result=%b");
@@ -8200,11 +8200,11 @@
                     "requesterDN=\"%s\" privilegeSet=\"%s\" result=%b");
     registerMessage(MSGID_PROXYAUTH_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to use the " +
-                    "proxied authorization control.");
+                    "proxied authorization control");
 
     registerMessage(MSGID_PROXYAUTH_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to use the " +
-                    "proxied authorization control.");
+                    "proxied authorization control");
   }
 }
 
diff --git a/opends/src/server/org/opends/server/messages/ExtensionsMessages.java b/opends/src/server/org/opends/server/messages/ExtensionsMessages.java
index bd082cc..35d89b6 100644
--- a/opends/src/server/org/opends/server/messages/ExtensionsMessages.java
+++ b/opends/src/server/org/opends/server/messages/ExtensionsMessages.java
@@ -5020,26 +5020,26 @@
   {
     registerMessage(MSGID_PWSCHEME_CANNOT_INITIALIZE_MESSAGE_DIGEST,
                     "An error occurred while attempting to initialize the " +
-                    "message digest generator for the %s algorithm:  %s.");
+                    "message digest generator for the %s algorithm:  %s");
     registerMessage(MSGID_PWSCHEME_CANNOT_BASE64_DECODE_STORED_PASSWORD,
                     "An error occurred while attempting to base64-decode " +
-                    "the password value %s:  %s.");
+                    "the password value %s:  %s");
     registerMessage(MSGID_PWSCHEME_DOES_NOT_SUPPORT_AUTH_PASSWORD,
                     "Password storage scheme %s does not support use with " +
-                    "the authentication password attribute syntax.");
+                    "the authentication password attribute syntax");
     registerMessage(MSGID_PWSCHEME_NOT_REVERSIBLE,
                     "The %s password storage scheme is not reversible, so it " +
                     "is impossible to recover the plaintext version of an " +
-                    "encoded password.");
+                    "encoded password");
     registerMessage(MSGID_PWSCHEME_CANNOT_ENCODE_PASSWORD,
                     "An unexpected error occurred while attempting to encode " +
                     "a password using the storage scheme defined in class " +
-                    "%s:  %s.");
+                    "%s:  %s");
 
 
     registerMessage(MSGID_JMX_ALERT_HANDLER_CANNOT_REGISTER,
                     "An error occurred while trying to register the JMX " +
-                    "alert handler with the MBean server:  %s.");
+                    "alert handler with the MBean server:  %s");
 
 
     registerMessage(MSGID_FIFOCACHE_DESCRIPTION_MAX_MEMORY_PCT,
@@ -5050,12 +5050,12 @@
                     "effect immediately, although if the value is reduced " +
                     "to a percentage that is less than the current " +
                     "consumption in the JVM, it may take some time for " +
-                    "existing cache items to be purged.");
+                    "existing cache items to be purged");
     registerMessage(MSGID_FIFOCACHE_CANNOT_DETERMINE_MAX_MEMORY_PCT,
                     "An error occurred while attempting to determine the " +
                     "value of the " + ATTR_FIFOCACHE_MAX_MEMORY_PCT +
                     " attribute in configuration entry %s:  %s.  The default " +
-                    "of %d will be used.");
+                    "of %d will be used");
     registerMessage(MSGID_FIFOCACHE_DESCRIPTION_MAX_ENTRIES,
                     "Specifies the maximum number of entries that may be " +
                     "held in the entry cache, with a value of zero " +
@@ -5065,24 +5065,24 @@
                     "will take effect immediately, although if it is reduced " +
                     "to a value that is less than the number of entries " +
                     "currently held in the cache, it may take some time for " +
-                    "existing cache items to be purged.");
+                    "existing cache items to be purged");
     registerMessage(MSGID_FIFOCACHE_CANNOT_DETERMINE_MAX_ENTRIES,
                     "An error occurred while attempting to determine the " +
                     "value of the " + ATTR_FIFOCACHE_MAX_ENTRIES +
                     " attribute in configuration entry %s:  %s.  No hard " +
                     "limit on the number of entries will be enforced, but " +
                     "the value of " + ATTR_FIFOCACHE_MAX_MEMORY_PCT +
-                    " will still be observed.");
+                    " will still be observed");
     registerMessage(MSGID_FIFOCACHE_DESCRIPTION_LOCK_TIMEOUT,
                     "Specifies the maximum length of time in milliseconds " +
                     "that the entry cache should block while attempting " +
                     "to acquire a lock for an entry.  Changes to this " +
-                    "configuration attribute will take effect immediately.");
+                    "configuration attribute will take effect immediately");
     registerMessage(MSGID_FIFOCACHE_CANNOT_DETERMINE_LOCK_TIMEOUT,
                     "An error occurred while attempting to determine the " +
                     "value of the " + ATTR_FIFOCACHE_LOCK_TIMEOUT +
                     " attribute in configuration entry %s:  %s.  The default " +
-                    "of %d will be used.");
+                    "of %d will be used");
     registerMessage(MSGID_FIFOCACHE_DESCRIPTION_INCLUDE_FILTERS,
                     "Specifies a set of search filters that may be used to " +
                     "indicate which entries should be included in the entry " +
@@ -5091,22 +5091,22 @@
                     "are provided, then any entry will be accepted.  Changes " +
                     "to this configuration attribute will take effect " +
                     "immediately, but will not impact existing entries that " +
-                    "are already held in the cache.");
+                    "are already held in the cache");
     registerMessage(MSGID_FIFOCACHE_CANNOT_DECODE_INCLUDE_FILTER,
                     "An error occurred while attempting to decode the value " +
                     "\"%s\" from attribute " + ATTR_FIFOCACHE_INCLUDE_FILTER +
                     " of entry %s:  %s.  This filter will not be used when " +
-                    "determining whether to store an entry in the cache.");
+                    "determining whether to store an entry in the cache");
     registerMessage(MSGID_FIFOCACHE_CANNOT_DECODE_ANY_INCLUDE_FILTERS,
                     "An error occurred while attempting to decode any of the " +
                     "values from attribute " + ATTR_FIFOCACHE_INCLUDE_FILTER +
                     " of entry %s.  All entries will be considered eligible " +
-                    "for inclusion in the cache.");
+                    "for inclusion in the cache");
     registerMessage(MSGID_FIFOCACHE_CANNOT_DETERMINE_INCLUDE_FILTERS,
                     "An error occurred while attempting to determine the " +
                     "value of the " + ATTR_FIFOCACHE_INCLUDE_FILTER +
                     " attribute in configuration entry %s:  %s.  All entries " +
-                    "will be considered eligible for inclusion in the cache.");
+                    "will be considered eligible for inclusion in the cache");
     registerMessage(MSGID_FIFOCACHE_DESCRIPTION_EXCLUDE_FILTERS,
                     "Specifies a set of search filters that may be used to " +
                     "indicate which entries should be excluded from the " +
@@ -5115,61 +5115,61 @@
                     "provided, then any entry will be accepted.  Changes to " +
                     "this configuration attribute will take effect " +
                     "immediately, but will not impact existing entries that " +
-                    "are already held in the cache.");
+                    "are already held in the cache");
     registerMessage(MSGID_FIFOCACHE_CANNOT_DECODE_EXCLUDE_FILTER,
                     "An error occurred while attempting to decode the value " +
                     "\"%s\" from attribute " + ATTR_FIFOCACHE_EXCLUDE_FILTER +
                     " of entry %s:  %s.  This filter will not be used when " +
-                    "determining whether to store an entry in the cache.");
+                    "determining whether to store an entry in the cache");
     registerMessage(MSGID_FIFOCACHE_CANNOT_DECODE_ANY_EXCLUDE_FILTERS,
                     "An error occurred while attempting to decode any of the " +
                     "values from attribute " + ATTR_FIFOCACHE_EXCLUDE_FILTER +
                     " of entry %s.  All entries will be considered eligible " +
-                    "for inclusion in the cache.");
+                    "for inclusion in the cache");
     registerMessage(MSGID_FIFOCACHE_CANNOT_DETERMINE_EXCLUDE_FILTERS,
                     "An error occurred while attempting to determine the " +
                     "value of the " + ATTR_FIFOCACHE_EXCLUDE_FILTER +
                     " attribute in configuration entry %s:  %s.  All entries " +
-                    "will be considered eligible for inclusion in the cache.");
+                    "will be considered eligible for inclusion in the cache");
     registerMessage(MSGID_FIFOCACHE_INVALID_MAX_MEMORY_PCT,
                     "The " + ATTR_FIFOCACHE_MAX_MEMORY_PCT + " attribute of " +
                     "entry %s, which holds the maximum percentage of JVM " +
                     "memory available for use in the entry cache, has an " +
                     "invalid value:  %s.  Its value must be an integer " +
-                    "between 1 and 100.");
+                    "between 1 and 100");
     registerMessage(MSGID_FIFOCACHE_INVALID_MAX_ENTRIES,
                     "The " + ATTR_FIFOCACHE_MAX_ENTRIES + " attribute of " +
                     "entry %s, which specifies the maximum number of entries " +
                     "that may be held in the entry cache, has an invalid " +
                     "value:  %s.  Its value must be a positive integer, or " +
-                    "zero to indicate that no limit should be enforced.");
+                    "zero to indicate that no limit should be enforced");
     registerMessage(MSGID_FIFOCACHE_INVALID_LOCK_TIMEOUT,
                     "The " + ATTR_FIFOCACHE_LOCK_TIMEOUT + " attribute of " +
                     "entry %s, which specifies the maximum length of time in " +
                     "milliseconds that the cache should block while " +
                     "attempting to obtain a lock on an entry, has an invalid " +
                     "value:  %s.  Its value must be a positive integer, or " +
-                    "zero to indicate that it should never block.");
+                    "zero to indicate that it should never block");
     registerMessage(MSGID_FIFOCACHE_INVALID_INCLUDE_FILTER,
                     "The " + ATTR_FIFOCACHE_INCLUDE_FILTER + " attribute of " +
                     "entry %s, which specifies a set of search filters that " +
                     "may be used to control which entries are included in " +
-                    "the cache, has an invalid value of \"%s\":  %s.");
+                    "the cache, has an invalid value of \"%s\":  %s");
     registerMessage(MSGID_FIFOCACHE_INVALID_INCLUDE_FILTERS,
                     "The " + ATTR_FIFOCACHE_INCLUDE_FILTER + " attribute of " +
                     "entry %s, which specifies a set of search filters that " +
                     "may be used to control which entries are included in " +
-                    "the cache, has an invalid value:  %s.");
+                    "the cache, has an invalid value:  %s");
     registerMessage(MSGID_FIFOCACHE_INVALID_EXCLUDE_FILTER,
                     "The " + ATTR_FIFOCACHE_EXCLUDE_FILTER + " attribute of " +
                     "entry %s, which specifies a set of search filters that " +
                     "may be used to control which entries are excluded from " +
-                    "the cache, has an invalid value of \"%s\":  %s.");
+                    "the cache, has an invalid value of \"%s\":  %s");
     registerMessage(MSGID_FIFOCACHE_INVALID_EXCLUDE_FILTERS,
                     "The " + ATTR_FIFOCACHE_EXCLUDE_FILTER + " attribute of " +
                     "entry %s, which specifies a set of search filters that " +
                     "may be used to control which entries are excluded from " +
-                    "the cache, has an invalid value:  %s.");
+                    "the cache, has an invalid value:  %s");
     registerMessage(MSGID_FIFOCACHE_UPDATED_MAX_MEMORY_PCT,
                     "The amount of memory that may be used for the entry " +
                     "cache has been updated to %d percent of the total " +
@@ -5177,24 +5177,24 @@
                     "bytes.  If this percentage has been reduced, it may " +
                     "take some time for entries to be purged so that the " +
                     "current cache memory consumption can reflect this new " +
-                    "setting.");
+                    "setting");
     registerMessage(MSGID_FIFOCACHE_UPDATED_MAX_ENTRIES,
                     "The number of entries that may be held in the entry " +
                     "cache has been updated to %d.  If this value has been " +
                     "reduced, it may take some time for entries to be purged " +
-                    "so that the cache can reflect this new setting.");
+                    "so that the cache can reflect this new setting");
     registerMessage(MSGID_FIFOCACHE_UPDATED_LOCK_TIMEOUT,
                     "The lock timeout that will be used to determine the " +
                     "length of time that the cache should block while " +
                     "attempting to acquire a lock for an entry has been " +
-                    "set to %d milliseconds.");
+                    "set to %d milliseconds");
     registerMessage(MSGID_FIFOCACHE_UPDATED_INCLUDE_FILTERS,
                     "The set of search filters that will control which " +
-                    "entries may be included in the cache has been updated.");
+                    "entries may be included in the cache has been updated");
     registerMessage(MSGID_FIFOCACHE_UPDATED_EXCLUDE_FILTERS,
                     "The set of search filters that will control which " +
                     "entries should be be excluded from the cache has been " +
-                    "updated.");
+                    "updated");
 
 
     registerMessage(MSGID_EXTOP_PASSMOD_NO_SUCH_ID_MAPPER,
@@ -5203,127 +5203,127 @@
                     "operation defined in entry %s either does not exist or " +
                     "is not enabled.  The identity mapper is a required " +
                     "component, and the password modify extended operation " +
-                    "will not be enabled.");
+                    "will not be enabled");
     registerMessage(MSGID_EXTOP_PASSMOD_CANNOT_DETERMINE_ID_MAPPER,
                     "An error occurred while attempting to determine the " +
                     "identity mapper to use in conjunction with the password " +
                     "modify extended operation defined in configuration " +
                     "entry %s:  %s.  The password modify extended operation " +
-                    "will not be enabled for use in the server.");
+                    "will not be enabled for use in the server");
     registerMessage(MSGID_EXTOP_PASSMOD_ILLEGAL_REQUEST_ELEMENT_TYPE,
                     "The password modify extended request sequence included " +
-                    "an ASN.1 element of an invalid type:  %s.");
+                    "an ASN.1 element of an invalid type:  %s");
     registerMessage(MSGID_EXTOP_PASSMOD_CANNOT_DECODE_REQUEST,
                     "An unexpected error occurred while attempting to decode " +
-                    "the password modify extended request sequence:  %s.");
+                    "the password modify extended request sequence:  %s");
     registerMessage(MSGID_EXTOP_PASSMOD_NO_AUTH_OR_USERID,
                     "The password modify extended request cannot be " +
                     "processed because it does not contain an authorization " +
-                    "ID and the underlying connection is not authenticated.");
+                    "ID and the underlying connection is not authenticated");
     registerMessage(MSGID_EXTOP_PASSMOD_CANNOT_LOCK_USER_ENTRY,
                     "The password modify extended request cannot be " +
                     "processed because the server was unable to obtain a " +
-                    "write lock on user entry %s after multiple attempts.");
+                    "write lock on user entry %s after multiple attempts");
     registerMessage(MSGID_EXTOP_PASSMOD_CANNOT_DECODE_AUTHZ_DN,
                     "The password modify extended request cannot be " +
                     "processed because the server cannot decode \"%s\" as a " +
                     "valid DN for use in the authorization ID for the " +
-                    "operation.");
+                    "operation");
     registerMessage(MSGID_EXTOP_PASSMOD_CANNOT_MAP_USER,
                     "The provided authorization ID string \"%s\" could not " +
-                    "be mapped to any user in the directory.");
+                    "be mapped to any user in the directory");
     registerMessage(MSGID_EXTOP_PASSMOD_ERROR_MAPPING_USER,
                     "An error occurred while attempting to map authorization " +
-                    "ID string \"%s\" to a user entry:  %s.");
+                    "ID string \"%s\" to a user entry:  %s");
     registerMessage(MSGID_EXTOP_PASSMOD_INVALID_AUTHZID_STRING,
                     "The password modify extended request cannot be " +
                     "processed because it contained an invalid authorization " +
                     "ID that did not start with either \"dn:\" or \"u:\".  " +
-                    "The provided authorization ID string was \"%s\".");
+                    "The provided authorization ID string was \"%s\"");
     registerMessage(MSGID_EXTOP_PASSMOD_NO_USER_ENTRY_BY_AUTHZID,
                     "The password modify extended request cannot be " +
                     "processed because it was not possible to identify the " +
                     "user entry to update based on the authorization DN of " +
-                    "\"%s\".");
+                    "\"%s\"");
     registerMessage(MSGID_EXTOP_PASSMOD_NO_DN_BY_AUTHZID,
                     "The password modify extended request cannot be " +
                     "processed because the provided authorization UID of " +
-                    "\"%s\" did not match any entries in the directory.");
+                    "\"%s\" did not match any entries in the directory");
     registerMessage(MSGID_EXTOP_PASSMOD_MULTIPLE_ENTRIES_BY_AUTHZID,
                     "The password modify extended request cannot be " +
                     "processed because the provided authorization UID of " +
-                    "\"%s\" matched more than one entry in the directory.");
+                    "\"%s\" matched more than one entry in the directory");
     registerMessage(MSGID_EXTOP_PASSMOD_INVALID_OLD_PASSWORD,
                     "The password modify extended operation cannot be " +
                     "processed because the current password provided for the " +
-                    "user is invalid.");
+                    "user is invalid");
     registerMessage(MSGID_EXTOP_PASSMOD_CANNOT_GET_PW_POLICY,
                     "An error occurred while attempting to get the " +
-                    "password policy for user %s:  %s.");
+                    "password policy for user %s:  %s");
     registerMessage(MSGID_EXTOP_PASSMOD_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to perform " +
-                    "password reset operations.");
+                    "password reset operations");
     registerMessage(MSGID_EXTOP_PASSMOD_ACCOUNT_DISABLED,
-                    "The user account has been administratively disabled.");
+                    "The user account has been administratively disabled");
     registerMessage(MSGID_EXTOP_PASSMOD_ACCOUNT_LOCKED,
-                    "The user account is locked.");
+                    "The user account is locked");
     registerMessage(MSGID_EXTOP_PASSMOD_REQUIRE_CURRENT_PW,
                     "The current password must be provided for self password " +
-                    "changes.");
+                    "changes");
     registerMessage(MSGID_EXTOP_PASSMOD_SECURE_AUTH_REQUIRED,
                     "Password modify operations that supply the user's " +
                     "current password must be performed over a secure " +
-                    "communication channel.");
+                    "communication channel");
     registerMessage(MSGID_EXTOP_PASSMOD_USER_PW_CHANGES_NOT_ALLOWED,
-                    "End users are not allowed to change their passwords.");
+                    "End users are not allowed to change their passwords");
     registerMessage(MSGID_EXTOP_PASSMOD_SECURE_CHANGES_REQUIRED,
                     "Password changes must be performed over a secure " +
-                    "communication channel.");
+                    "communication channel");
     registerMessage(MSGID_EXTOP_PASSMOD_IN_MIN_AGE,
                     "The password cannot be changed because the previous " +
-                    "password change was too recent.");
+                    "password change was too recent");
     registerMessage(MSGID_EXTOP_PASSMOD_PASSWORD_IS_EXPIRED,
-                    "The password cannot be changed because it is expired.");
+                    "The password cannot be changed because it is expired");
     registerMessage(MSGID_EXTOP_PASSMOD_NO_PW_GENERATOR,
                     "No new password was provided, and no password generator " +
                     "has been defined that may be used to automatically " +
-                    "create a new password.");
+                    "create a new password");
     registerMessage(MSGID_EXTOP_PASSMOD_CANNOT_GENERATE_PW,
                     "An error occurred while attempting to create a new " +
-                    "password using the password generator:  %s.");
+                    "password using the password generator:  %s");
     registerMessage(MSGID_EXTOP_PASSMOD_PRE_ENCODED_NOT_ALLOWED,
                     "The password policy does not allow users to supply " +
-                    "pre-encoded passwords.");
+                    "pre-encoded passwords");
     registerMessage(MSGID_EXTOP_PASSMOD_UNACCEPTABLE_PW,
                     "The provided new password failed the validation checks " +
-                    "defined in the server:  %s.");
+                    "defined in the server:  %s");
     registerMessage(MSGID_EXTOP_PASSMOD_CANNOT_ENCODE_PASSWORD,
                     "Unable to encode the provided password using the " +
-                    "default scheme(s):  %s.");
+                    "default scheme(s):  %s");
     registerMessage(MSGID_EXTOP_PASSMOD_NOOP,
                     "The password modify operation was not actually " +
                     "performed in the Directory Server because the LDAP " +
-                    "no-op control was present in the request.");
+                    "no-op control was present in the request");
 
 
     registerMessage(MSGID_FILE_KEYMANAGER_DESCRIPTION_FILE,
                     "Specifies the path to the file containing the Directory " +
                     "Server keystore information.  Changes to this " +
                     "configuration attribute will take effect the next time " +
-                    "that the key manager is accessed.");
+                    "that the key manager is accessed");
     registerMessage(MSGID_FILE_KEYMANAGER_NO_FILE_ATTR,
                     "The configuration entry %s that defines a file-based " +
                     "key manager does not contain attribute " +
                     ATTR_KEYSTORE_FILE + " that should hold the path to the " +
-                    "keystore file.");
+                    "keystore file");
     registerMessage(MSGID_FILE_KEYMANAGER_NO_SUCH_FILE,
                     "The keystore file %s specified in attribute " +
                     ATTR_KEYSTORE_FILE + " of configuration entry %s does " +
-                    " not exist.");
+                    " not exist");
     registerMessage(MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_FILE,
                     "An unexpected error occurred while trying to determine " +
                     "the value of configuration attribute " +
-                    ATTR_KEYSTORE_FILE + " in configuration entry %s:  %s.");
+                    ATTR_KEYSTORE_FILE + " in configuration entry %s:  %s");
     registerMessage(MSGID_FILE_KEYMANAGER_DESCRIPTION_TYPE,
                     "Specifies the keystore type for the Directory Server " +
                     "keystore.  Valid values should always include 'JKS' and " +
@@ -5331,82 +5331,82 @@
                     "values as well.  If no value is provided, then the " +
                     "JVM-default value will be used.  Changes to this " +
                     "configuration attribute will take effect the next time " +
-                    "that the key manager is accessed.");
+                    "that the key manager is accessed");
     registerMessage(MSGID_FILE_KEYMANAGER_INVALID_TYPE,
                     "The keystore type %s specified in attribute " +
                     ATTR_KEYSTORE_TYPE + " of configuration entry %s is not " +
-                    "valid:  %s.");
+                    "valid:  %s");
     registerMessage(MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_TYPE,
                     "An unexpected error occurred while trying to determine " +
                     "the value of configuration attribute " +
-                    ATTR_KEYSTORE_TYPE + " in configuration entry %s:  %s.");
+                    ATTR_KEYSTORE_TYPE + " in configuration entry %s:  %s");
     registerMessage(MSGID_FILE_KEYMANAGER_DESCRIPTION_PIN_PROPERTY,
                     "Specifies the name of the Java property that contains " +
                     "the clear-text PIN needed to access the file-based " +
                     "key manager.  Changes to this configuration attribute " +
                     "will take effect the next time that the key manager is " +
-                    "accessed.");
+                    "accessed");
     registerMessage(MSGID_FILE_KEYMANAGER_PIN_PROPERTY_NOT_SET,
                     "Java property %s which is specified in attribute " +
                     ATTR_KEYSTORE_PIN_PROPERTY + " of configuration entry %s " +
                     "should contain the PIN needed to access the file-based " +
-                    "key manager, but this property is not set.");
+                    "key manager, but this property is not set");
     registerMessage(MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_PIN_PROPERTY,
                     "An unexpected error occurred while trying to determine " +
                     "the value of configuration attribute " +
                     ATTR_KEYSTORE_PIN_PROPERTY + " in configuration entry " +
-                    "%s:  %s.");
+                    "%s:  %s");
     registerMessage(MSGID_FILE_KEYMANAGER_DESCRIPTION_PIN_ENVAR,
                     "Specifies the name of the environment variable that " +
                     "contains the clear-text PIN needed to access the " +
                     "file-based key manager.  Changes to this configuration " +
                     "attribute will take effect the next time that the " +
-                    "key manager is accessed.");
+                    "key manager is accessed");
     registerMessage(MSGID_FILE_KEYMANAGER_PIN_ENVAR_NOT_SET,
                     "Environment variable %s which is specified in attribute " +
                     ATTR_KEYSTORE_PIN_ENVAR + " of configuration entry %s " +
                     "should contain the PIN needed to access the file-based " +
-                    "key manager, but this property is not set.");
+                    "key manager, but this property is not set");
     registerMessage(MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_PIN_ENVAR,
                     "An unexpected error occurred while trying to determine " +
                     "the value of configuration attribute " +
                     ATTR_KEYSTORE_PIN_ENVAR + " in configuration entry %s:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_FILE_KEYMANAGER_DESCRIPTION_PIN_FILE,
                     "Specifies the path to the text file whose only contents " +
                     "should be a single line containing the clear-text PIN " +
                     "needed to access the file-based key manager.  Changes " +
                     "to this configuration attribute will take effect the " +
-                    "next time that the key manager is accessed.");
+                    "next time that the key manager is accessed");
     registerMessage(MSGID_FILE_KEYMANAGER_PIN_NO_SUCH_FILE,
                     "File %s specified in attribute " + ATTR_KEYSTORE_PIN_FILE +
                     " of configuration entry %s should contain the PIN " +
                     "needed to access the file-based key manager, but this " +
-                    "file does not exist.");
+                    "file does not exist");
     registerMessage(MSGID_FILE_KEYMANAGER_PIN_FILE_CANNOT_READ,
                     "An error occurred while trying to read the keystore PIN " +
                     "from file %s specified in configuration attribute " +
                     ATTR_KEYSTORE_PIN_FILE + " of configuration entry %s:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_FILE_KEYMANAGER_PIN_FILE_EMPTY,
                     "File %s specified in attribute " + ATTR_KEYSTORE_PIN_FILE +
                     " of configuration entry %s should contain the PIN " +
                     "needed to access the file-based key manager, but this " +
-                    "file is empty.");
+                    "file is empty");
     registerMessage(MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_PIN_FILE,
                     "An unexpected error occurred while trying to determine " +
                     "the value of configuration attribute " +
                     ATTR_KEYSTORE_PIN_FILE + " in configuration entry %s:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_FILE_KEYMANAGER_DESCRIPTION_PIN_ATTR,
                     "Specifies the clear-text PIN needed to access the " +
                     "file-based key manager.  Changes to this configuration " +
                     "attribute will take effect the next time that the " +
-                    "key manager is accessed.");
+                    "key manager is accessed");
     registerMessage(MSGID_FILE_KEYMANAGER_CANNOT_DETERMINE_PIN_FROM_ATTR,
                     "An unexpected error occurred while trying to determine " +
                     "the value of configuration attribute " +
-                    ATTR_KEYSTORE_PIN + " in configuration entry %s:  %s.");
+                    ATTR_KEYSTORE_PIN + " in configuration entry %s:  %s");
     registerMessage(MSGID_FILE_KEYMANAGER_NO_PIN,
                     "Configuration entry %s does not specify a means of " +
                     "determining the PIN needed to access the contents of " +
@@ -5416,27 +5416,27 @@
                     "variable (named by attribute " + ATTR_KEYSTORE_PIN_ENVAR +
                     "), a text file (named by attribute " +
                     ATTR_KEYSTORE_PIN_FILE + "), or directly in the entry " +
-                    "using attribute " + ATTR_KEYSTORE_PIN + ".");
+                    "using attribute " + ATTR_KEYSTORE_PIN + "");
     registerMessage(MSGID_FILE_KEYMANAGER_CANNOT_LOAD,
                     "An error occurred while trying to load the keystore " +
-                    "contents from file %s:  %s.");
+                    "contents from file %s:  %s");
     registerMessage(MSGID_FILE_KEYMANAGER_CANNOT_CREATE_FACTORY,
                     "An error occurred while trying to create a key manager " +
-                    "factory to access the contents of keystore file %s:  %s.");
+                    "factory to access the contents of keystore file %s:  %s");
     registerMessage(MSGID_FILE_KEYMANAGER_UPDATED_FILE,
                     "The value of the " + ATTR_KEYSTORE_FILE +
                     " attribute in configuration entry %s has been updated " +
                     "to %s.  The new value will take effect the next time " +
-                    "the key manager is accessed.");
+                    "the key manager is accessed");
     registerMessage(MSGID_FILE_KEYMANAGER_UPDATED_TYPE,
                     "The value of the " + ATTR_KEYSTORE_TYPE +
                     " attribute in configuration entry %s has been updated " +
                     "to %s.  The new value will take effect the next time " +
-                    "the key manager is accessed.");
+                    "the key manager is accessed");
     registerMessage(MSGID_FILE_KEYMANAGER_UPDATED_PIN,
                     "The PIN to use to access the file-based key manager has " +
                     "been updated.  The new value will take effect the next " +
-                    "time the key manager is accessed.");
+                    "time the key manager is accessed");
 
 
     registerMessage(MSGID_PKCS11_KEYMANAGER_DESCRIPTION_PIN_PROPERTY,
@@ -5444,68 +5444,68 @@
                     "the clear-text PIN needed to access the PKCS#11 key " +
                     "manager.  Changes to this configuration attribute will " +
                     "take effect the next time that the key manager is " +
-                    "accessed.");
+                    "accessed");
     registerMessage(MSGID_PKCS11_KEYMANAGER_PIN_PROPERTY_NOT_SET,
                     "Java property %s which is specified in attribute " +
                     ATTR_KEYSTORE_PIN_PROPERTY + " of configuration entry %s " +
                     "should contain the PIN needed to access the PKCS#11 key " +
-                    "manager, but this property is not set.");
+                    "manager, but this property is not set");
     registerMessage(MSGID_PKCS11_KEYMANAGER_CANNOT_DETERMINE_PIN_PROPERTY,
                     "An unexpected error occurred while trying to determine " +
                     "the value of configuration attribute " +
                     ATTR_KEYSTORE_PIN_PROPERTY + " in configuration entry " +
-                    "%s:  %s.");
+                    "%s:  %s");
     registerMessage(MSGID_PKCS11_KEYMANAGER_DESCRIPTION_PIN_ENVAR,
                     "Specifies the name of the environment variable that " +
                     "contains the clear-text PIN needed to access the " +
                     "PKCS#11 key manager.  Changes to this configuration " +
                     "attribute will take effect the next time that the key " +
-                    "manager is accessed.");
+                    "manager is accessed");
     registerMessage(MSGID_PKCS11_KEYMANAGER_PIN_ENVAR_NOT_SET,
                     "Environment variable %s which is specified in attribute " +
                     ATTR_KEYSTORE_PIN_ENVAR + " of configuration entry %s " +
                     "should contain the PIN needed to access the PKCS#11 " +
-                    "key manager, but this property is not set.");
+                    "key manager, but this property is not set");
     registerMessage(MSGID_PKCS11_KEYMANAGER_CANNOT_DETERMINE_PIN_ENVAR,
                     "An unexpected error occurred while trying to determine " +
                     "the value of configuration attribute " +
                     ATTR_KEYSTORE_PIN_ENVAR + " in configuration entry %s:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_PKCS11_KEYMANAGER_DESCRIPTION_PIN_FILE,
                     "Specifies the path to the text file whose only contents " +
                     "should be a single line containing the clear-text PIN " +
                     "needed to access the PKCS#11 key manager.  Changes to " +
                     "this configuration attribute will take effect the next " +
-                    "time that the key manager is accessed.");
+                    "time that the key manager is accessed");
     registerMessage(MSGID_PKCS11_KEYMANAGER_PIN_NO_SUCH_FILE,
                     "File %s specified in attribute " + ATTR_KEYSTORE_PIN_FILE +
                     " of configuration entry %s should contain the PIN " +
                     "needed to access the PKCS#11 key manager, but this file " +
-                    "does not exist.");
+                    "does not exist");
     registerMessage(MSGID_PKCS11_KEYMANAGER_PIN_FILE_CANNOT_READ,
                     "An error occurred while trying to read the keystore PIN " +
                     "from file %s specified in configuration attribute " +
                     ATTR_KEYSTORE_PIN_FILE + " of configuration entry %s:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_PKCS11_KEYMANAGER_PIN_FILE_EMPTY,
                     "File %s specified in attribute " + ATTR_KEYSTORE_PIN_FILE +
                     " of configuration entry %s should contain the PIN " +
                     "needed to access the PKCS#11 key manager, but this file " +
-                    "is empty.");
+                    "is empty");
     registerMessage(MSGID_PKCS11_KEYMANAGER_CANNOT_DETERMINE_PIN_FILE,
                     "An unexpected error occurred while trying to determine " +
                     "the value of configuration attribute " +
                     ATTR_KEYSTORE_PIN_FILE + " in configuration entry %s:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_PKCS11_KEYMANAGER_DESCRIPTION_PIN_ATTR,
                     "Specifies the clear-text PIN needed to access the " +
                     "PKCS#11 key manager.  Changes to this configuration " +
                     "attribute will take effect the next time that the key " +
-                    "manager is accessed.");
+                    "manager is accessed");
     registerMessage(MSGID_PKCS11_KEYMANAGER_CANNOT_DETERMINE_PIN_FROM_ATTR,
                     "An unexpected error occurred while trying to determine " +
                     "the value of configuration attribute " +
-                    ATTR_KEYSTORE_PIN + " in configuration entry %s:  %s.");
+                    ATTR_KEYSTORE_PIN + " in configuration entry %s:  %s");
     registerMessage(MSGID_PKCS11_KEYMANAGER_NO_PIN,
                     "Configuration entry %s does not specify a means of " +
                     "determining the PIN needed to access the contents of " +
@@ -5515,38 +5515,38 @@
                     "variable (named by attribute " + ATTR_KEYSTORE_PIN_ENVAR +
                     "), a text file (named by attribute " +
                     ATTR_KEYSTORE_PIN_FILE + "), or directly in the entry " +
-                    "using attribute " + ATTR_KEYSTORE_PIN + ".");
+                    "using attribute " + ATTR_KEYSTORE_PIN + "");
     registerMessage(MSGID_PKCS11_KEYMANAGER_CANNOT_LOAD,
                     "An error occurred while trying to access the PKCS#11 " +
-                    "key manager:  %s.");
+                    "key manager:  %s");
     registerMessage(MSGID_PKCS11_KEYMANAGER_CANNOT_CREATE_FACTORY,
                     "An error occurred while trying to create a key manager " +
                     "factory to access the contents of the PKCS#11 " +
-                    "keystore:  %s.");
+                    "keystore:  %s");
     registerMessage(MSGID_PKCS11_KEYMANAGER_UPDATED_PIN,
                     "The PIN to use to access the PKCS#11 key manager has " +
                     "been updated.  The new value will take effect the next " +
-                    "time the key manager is accessed.");
+                    "time the key manager is accessed");
 
 
     registerMessage(MSGID_FILE_TRUSTMANAGER_DESCRIPTION_FILE,
                     "Specifies the path to the file containing the Directory " +
                     "Server trust store information.  Changes to this " +
                     "configuration attribute will take effect the next time " +
-                    "that the trust manager is accessed.");
+                    "that the trust manager is accessed");
     registerMessage(MSGID_FILE_TRUSTMANAGER_NO_FILE_ATTR,
                     "The configuration entry %s that defines a file-based " +
                     "trust manager does not contain attribute " +
                     ATTR_TRUSTSTORE_FILE + " that should hold the path to " +
-                    "the trust store file.");
+                    "the trust store file");
     registerMessage(MSGID_FILE_TRUSTMANAGER_NO_SUCH_FILE,
                     "The trust store file %s specified in attribute " +
                     ATTR_TRUSTSTORE_FILE + " of configuration entry %s does " +
-                    " not exist.");
+                    " not exist");
     registerMessage(MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_FILE,
                     "An unexpected error occurred while trying to determine " +
                     "the value of configuration attribute " +
-                    ATTR_TRUSTSTORE_FILE + " in configuration entry %s:  %s.");
+                    ATTR_TRUSTSTORE_FILE + " in configuration entry %s:  %s");
     registerMessage(MSGID_FILE_TRUSTMANAGER_DESCRIPTION_TYPE,
                     "Specifies the keystore type for the Directory Server " +
                     "trust store.  Valid values should always include 'JKS' " +
@@ -5554,127 +5554,127 @@
                     "other values as well.  If no value is provided, then " +
                     "the JVM-default value will be used.  Changes to this " +
                     "configuration attribute will take effect the next time " +
-                    "that the trust manager is accessed.");
+                    "that the trust manager is accessed");
     registerMessage(MSGID_FILE_TRUSTMANAGER_INVALID_TYPE,
                     "The trust store type %s specified in attribute " +
                     ATTR_TRUSTSTORE_TYPE + " of configuration entry %s is " +
-                    "not valid:  %s.");
+                    "not valid:  %s");
     registerMessage(MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_TYPE,
                     "An unexpected error occurred while trying to determine " +
                     "the value of configuration attribute " +
-                    ATTR_TRUSTSTORE_TYPE + " in configuration entry %s:  %s.");
+                    ATTR_TRUSTSTORE_TYPE + " in configuration entry %s:  %s");
     registerMessage(MSGID_FILE_TRUSTMANAGER_DESCRIPTION_PIN_PROPERTY,
                     "Specifies the name of the Java property that contains " +
                     "the clear-text PIN needed to access the file-based " +
                     "trust manager.  Changes to this configuration attribute " +
                     "will take effect the next time that the trust manager " +
-                    "is accessed.");
+                    "is accessed");
     registerMessage(MSGID_FILE_TRUSTMANAGER_PIN_PROPERTY_NOT_SET,
                     "Java property %s which is specified in attribute " +
                     ATTR_TRUSTSTORE_PIN_PROPERTY + " of configuration entry " +
                     "%s should contain the PIN needed to access the " +
-                    "file-based trust manager, but this property is not set.");
+                    "file-based trust manager, but this property is not set");
     registerMessage(MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_PIN_PROPERTY,
                     "An unexpected error occurred while trying to determine " +
                     "the value of configuration attribute " +
                     ATTR_TRUSTSTORE_PIN_PROPERTY + " in configuration entry " +
-                    "%s:  %s.");
+                    "%s:  %s");
     registerMessage(MSGID_FILE_TRUSTMANAGER_DESCRIPTION_PIN_ENVAR,
                     "Specifies the name of the environment variable that " +
                     "contains the clear-text PIN needed to access the " +
                     "file-based trust manager.  Changes to this " +
                     "configuration attribute will take effect the next time " +
-                    "that the trust manager is accessed.");
+                    "that the trust manager is accessed");
     registerMessage(MSGID_FILE_TRUSTMANAGER_PIN_ENVAR_NOT_SET,
                     "Environment variable %s which is specified in attribute " +
                     ATTR_TRUSTSTORE_PIN_ENVAR + " of configuration entry %s " +
                     "should contain the PIN needed to access the file-based " +
-                    "trust manager, but this property is not set.");
+                    "trust manager, but this property is not set");
     registerMessage(MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_PIN_ENVAR,
                     "An unexpected error occurred while trying to determine " +
                     "the value of configuration attribute " +
                     ATTR_TRUSTSTORE_PIN_ENVAR + " in configuration entry " +
-                    "%s:  %s.");
+                    "%s:  %s");
     registerMessage(MSGID_FILE_TRUSTMANAGER_DESCRIPTION_PIN_FILE,
                     "Specifies the path to the text file whose only contents " +
                     "should be a single line containing the clear-text PIN " +
                     "needed to access the file-based trust manager.  Changes " +
                     "to this configuration attribute will take effect the " +
-                    "next time that the trust manager is accessed.");
+                    "next time that the trust manager is accessed");
     registerMessage(MSGID_FILE_TRUSTMANAGER_PIN_NO_SUCH_FILE,
                     "File %s specified in attribute " +
                     ATTR_TRUSTSTORE_PIN_FILE + " of configuration entry %s " +
                     "should contain the PIN needed to access the file-based " +
-                    "trust manager, but this file does not exist.");
+                    "trust manager, but this file does not exist");
     registerMessage(MSGID_FILE_TRUSTMANAGER_PIN_FILE_CANNOT_READ,
                     "An error occurred while trying to read the trust store " +
                     "PIN from file %s specified in configuration attribute " +
                     ATTR_TRUSTSTORE_PIN_FILE + " of configuration entry %s:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_FILE_TRUSTMANAGER_PIN_FILE_EMPTY,
                     "File %s specified in attribute " +
                     ATTR_TRUSTSTORE_PIN_FILE + " of configuration entry %s " +
                     "should contain the PIN needed to access the file-based " +
-                    "trust manager, but this file is empty.");
+                    "trust manager, but this file is empty");
     registerMessage(MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_PIN_FILE,
                     "An unexpected error occurred while trying to determine " +
                     "the value of configuration attribute " +
                     ATTR_TRUSTSTORE_PIN_FILE + " in configuration entry %s:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_FILE_TRUSTMANAGER_DESCRIPTION_PIN_ATTR,
                     "Specifies the clear-text PIN needed to access the " +
                     "file-based trust manager.  Changes to this " +
                     "configuration attribute will take effect the next time " +
-                    "that the trust manager is accessed.");
+                    "that the trust manager is accessed");
     registerMessage(MSGID_FILE_TRUSTMANAGER_CANNOT_DETERMINE_PIN_FROM_ATTR,
                     "An unexpected error occurred while trying to determine " +
                     "the value of configuration attribute " +
-                    ATTR_TRUSTSTORE_PIN + " in configuration entry %s:  %s.");
+                    ATTR_TRUSTSTORE_PIN + " in configuration entry %s:  %s");
     registerMessage(MSGID_FILE_TRUSTMANAGER_CANNOT_LOAD,
                     "An error occurred while trying to load the trust store " +
-                    "contents from file %s:  %s.");
+                    "contents from file %s:  %s");
     registerMessage(MSGID_FILE_TRUSTMANAGER_CANNOT_CREATE_FACTORY,
                     "An error occurred while trying to create a trust " +
                     "manager factory to access the contents of trust store " +
-                    "file %s:  %s.");
+                    "file %s:  %s");
     registerMessage(MSGID_FILE_TRUSTMANAGER_UPDATED_FILE,
                     "The value of the " + ATTR_TRUSTSTORE_FILE +
                     " attribute in configuration entry %s has been updated " +
                     "to %s.  The new value will take effect the next time " +
-                    "the trust manager is accessed.");
+                    "the trust manager is accessed");
     registerMessage(MSGID_FILE_TRUSTMANAGER_UPDATED_TYPE,
                     "The value of the " + ATTR_TRUSTSTORE_TYPE +
                     " attribute in configuration entry %s has been updated " +
                     "to %s.  The new value will take effect the next time " +
-                    "the trust manager is accessed.");
+                    "the trust manager is accessed");
     registerMessage(MSGID_FILE_TRUSTMANAGER_UPDATED_PIN,
                     "The PIN to use to access the file-based trust manager " +
                     "has been updated.  The new value will take effect the " +
-                    "next time the trust manager is accessed.");
+                    "next time the trust manager is accessed");
 
 
     registerMessage(MSGID_NULL_SECURITY_PROVIDER_READ_ERROR,
                     "An unexpected error occurred while attempting to read " +
                     "data from the client using the null connection security " +
-                    "provider:  %s.");
+                    "provider:  %s");
     registerMessage(MSGID_NULL_SECURITY_PROVIDER_WRITE_ERROR,
                     "An unexpected error occurred while attempting to write " +
                     "data to the client using the null connection security " +
-                    "provider:  %s.");
+                    "provider:  %s");
 
 
     registerMessage(MSGID_TLS_SECURITY_PROVIDER_CANNOT_INITIALIZE,
                     "An error occurred while attempting to initialize the " +
                     "SSL context for use in the TLS connection security " +
-                    "provider:  %s.");
+                    "provider:  %s");
     registerMessage(MSGID_TLS_SECURITY_PROVIDER_UNEXPECTED_UNWRAP_STATUS,
                     "An unexpected status result was returned to the TLS " +
                     "connection security provider when attempting to unwrap " +
-                    "encrypted data read from the client:  %s.");
+                    "encrypted data read from the client:  %s");
     registerMessage(MSGID_TLS_SECURITY_PROVIDER_READ_ERROR,
                     "An unexpected error occurred while attempting to read " +
                     "data from the client using the TLS connection security " +
-                    "provider:  %s.");
+                    "provider:  %s");
     registerMessage(MSGID_TLS_SECURITY_PROVIDER_WRITE_NEEDS_UNWRAP,
                     "An attempt was made to write data to a client through " +
                     "the TLS connection security provider, but the SSL " +
@@ -5684,64 +5684,64 @@
                     "condition, and it is not possible to continue " +
                     "processing on this client connection without the " +
                     "potential for blocking other client connections, so " +
-                    "connection will be closed.");
+                    "connection will be closed");
     registerMessage(MSGID_TLS_SECURITY_PROVIDER_UNEXPECTED_WRAP_STATUS,
                     "An unexpected status result was returned to the TLS " +
                     "connection security provider when attempting to wrap " +
-                    "clear-text data for writing to the client:  %s.");
+                    "clear-text data for writing to the client:  %s");
     registerMessage(MSGID_TLS_SECURITY_PROVIDER_WRITE_ERROR,
                     "An unexpected error occurred while attempting to write " +
                     "data to the client using the TLS connection security " +
-                    "provider:  %s.");
+                    "provider:  %s");
 
 
     registerMessage(MSGID_SEDCM_NO_PEER_CERTIFICATE,
                     "Could not map the provided certificate chain to a user " +
-                    "entry because no peer certificate was available.");
+                    "entry because no peer certificate was available");
     registerMessage(MSGID_SEDCM_PEER_CERT_NOT_X509,
                     "Could not map the provided certificate chain to a user " +
                     "because the peer certificate was not an X.509 " +
-                    "certificate (peer certificate format was %s).");
+                    "certificate (peer certificate format was %s)");
     registerMessage(MSGID_SEDCM_CANNOT_DECODE_SUBJECT_AS_DN,
                     "Could not map the provided certificate chain to a user " +
                     "because the peer certificate subject \"%s\" could not " +
-                    "be decoded as an LDAP DN:  %s.");
+                    "be decoded as an LDAP DN:  %s");
     registerMessage(MSGID_SEDCM_CANNOT_GET_ENTRY,
                     "Could not map the provided certificate chain to a user " +
                     "because an error occurred while attempting to retrieve " +
-                    "the user entry with DN \"%s\":  %s.");
+                    "the user entry with DN \"%s\":  %s");
     registerMessage(MSGID_SEDCM_NO_USER_FOR_DN,
                     "Could not map the provided certificate chain to a user " +
-                    "because no user entry exists with a DN of %s.");
+                    "because no user entry exists with a DN of %s");
     registerMessage(MSGID_SEDCM_CANNOT_LOCK_ENTRY,
                     "The Directory Server was unable to obtain a read lock " +
-                    "on user entry %s in order to retrieve that entry.");
+                    "on user entry %s in order to retrieve that entry");
 
 
 
     registerMessage(MSGID_SASLEXTERNAL_NO_CLIENT_CONNECTION,
                     "The SASL EXTERNAL bind request could not be processed " +
                     "because the associated bind request does not have a " +
-                    "reference to the client connection.");
+                    "reference to the client connection");
     registerMessage(MSGID_SASLEXTERNAL_NO_SECURITY_PROVIDER,
                     "The SASL EXTERNAL bind request could not be processed " +
                     "because the associated client connection does not " +
-                    "have a security provider.");
+                    "have a security provider");
     registerMessage(MSGID_SASLEXTERNAL_CLIENT_NOT_USING_TLS_PROVIDER,
                     "The SASL EXTERNAL bind request could not be processed " +
                     "because the client connection is not using the TLS " +
                     "security provider (client security provider is %s).  " +
                     "The TLS security provider is required for clients that " +
-                    "wish to use SASL EXTERNAL authentication.");
+                    "wish to use SASL EXTERNAL authentication");
     registerMessage(MSGID_SASLEXTERNAL_NO_CLIENT_CERT,
                     "The SASL EXTERNAL bind request could not be processed " +
                     "because the client did not present an certificate chain " +
-                    "during SSL/TLS negotiation.");
+                    "during SSL/TLS negotiation");
     registerMessage(MSGID_SASLEXTERNAL_NO_MAPPING,
                     "The SASL EXTERNAL bind request failed because the " +
                     "certificate chain presented by the client during " +
                     "SSL/TLS negotiation could not be mapped to a user " +
-                    "entry in the Directory Server.");
+                    "entry in the Directory Server");
     registerMessage(MSGID_SASLEXTERNAL_DESCRIPTION_VALIDATION_POLICY,
                     "Indicates whether the SASL EXTERNAL mechanism handler " +
                     "should attempt to validate the peer certificate against " +
@@ -5754,96 +5754,96 @@
                     "if there are one or more certificates in the user's " +
                     "entry, but will not fail if there are no certificates " +
                     "in the entry.  Changes to this configuration attribute " +
-                    "will take effect immediately.");
+                    "will take effect immediately");
     registerMessage(MSGID_SASLEXTERNAL_INVALID_VALIDATION_VALUE,
                     "Configuration entry %s has an invalid value %s for " +
                     "attribute " + ATTR_CLIENT_CERT_VALIDATION_POLICY +
                     ".  The value must be one of \"always\", \"never\", or " +
-                    "\"ifpresent\".");
+                    "\"ifpresent\"");
     registerMessage(MSGID_SASLEXTERNAL_CANNOT_GET_VALIDATION_POLICY,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " +
                     ATTR_CLIENT_CERT_VALIDATION_POLICY +
-                    " attribute in configuration entry %s:  %s.");
+                    " attribute in configuration entry %s:  %s");
     registerMessage(MSGID_SASLEXTERNAL_DESCRIPTION_CERTIFICATE_ATTRIBUTE,
                     "Specifies the name of the attribute that will be used " +
                     "to hold the certificate information in user entries " +
                     "for the purpose of validation.  This must specify the " +
                     "name of a valid attribute type defined in the server " +
                     "schema.  Changes to this configuration attribute will " +
-                    "take effect immediately.");
+                    "take effect immediately");
     registerMessage(MSGID_SASLEXTERNAL_CANNOT_GET_CERT_ATTR,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " +
                     ATTR_VALIDATION_CERT_ATTRIBUTE +
-                    " attribute in configuration entry %s:  %s.");
+                    " attribute in configuration entry %s:  %s");
     registerMessage(MSGID_SASLEXTERNAL_UNKNOWN_CERT_ATTR,
                     "The attribute %s referenced in configuration attribute " +
                     ATTR_VALIDATION_CERT_ATTRIBUTE +
                     " in configuration entry %s does not exist in the " +
                     "Directory Server schema.  The attribute that is to be " +
                     "used for certificate validation during SASL EXTERNAL " +
-                    "authentication must be defined in the server schema.");
+                    "authentication must be defined in the server schema");
     registerMessage(MSGID_SASLEXTERNAL_DESCRIPTION_CERT_MAPPER_DN,
                     "Specifies the DN of the configuration entry that " +
                     "defines the certificate mapper to use when mapping a " +
                     "certificate to a user entry.  Changes to this " +
-                    "configuration attribute will take effect immediately.");
+                    "configuration attribute will take effect immediately");
     registerMessage(MSGID_SASLEXTERNAL_NO_CERTIFICATE_MAPPER_DN,
                     "Configuration entry %s does not contain attribute " +
                     ATTR_CERTMAPPER_DN + " which is required to specify " +
                     "which certificate mapper should be used to map " +
-                    "certificates to user entries.");
+                    "certificates to user entries");
     registerMessage(MSGID_SASLEXTERNAL_INVALID_CERTIFICATE_MAPPER_DN,
                     "Configuration entry %s contains a certificate mapper DN " +
                     "of %s, but no such certificate mapper is enabled for " +
-                    "use in the Directory Server.");
+                    "use in the Directory Server");
     registerMessage(MSGID_SASLEXTERNAL_CANNOT_GET_CERT_MAPPER_DN,
                     "An error occurred while attempting to retrieve the " +
-                    "certificate mapper DN from configuration entry %s:  %s.");
+                    "certificate mapper DN from configuration entry %s:  %s");
     registerMessage(MSGID_SASLEXTERNAL_NO_CERT_IN_ENTRY,
                     "Unable to authenticate via SASL EXTERNAL because the " +
                     "mapped user entry %s does not have any certificates " +
-                    "with which to verify the presented peer certificate.");
+                    "with which to verify the presented peer certificate");
     registerMessage(MSGID_SASLEXTERNAL_PEER_CERT_NOT_FOUND,
                     "Unable to authenticate via SASL EXTERNAL because the " +
                     "mapped user entry %s did not contain the peer " +
-                    "certificate presented by the client.");
+                    "certificate presented by the client");
     registerMessage(MSGID_SASLEXTERNAL_CANNOT_VALIDATE_CERT,
                     "An error occurred while attempting to validate the peer " +
                     "certificate presented by the client with a certificate " +
-                    "from the user's entry %s:  %s.");
+                    "from the user's entry %s:  %s");
     registerMessage(MSGID_SASLEXTERNAL_UPDATED_VALIDATION_POLICY,
                     "Attribute " + ATTR_CLIENT_CERT_VALIDATION_POLICY +
                     " in configuration entry %s has been updated.  The new " +
-                    "client certificate validation policy is %s.");
+                    "client certificate validation policy is %s");
     registerMessage(MSGID_SASLEXTERNAL_UPDATED_CERT_ATTR,
                     "Attribute " + ATTR_VALIDATION_CERT_ATTRIBUTE +
                     " in configuration entry %s has been updated.  The %s " +
                     "attribute will now be used when validating peer " +
-                    "certificates.");
+                    "certificates");
     registerMessage(MSGID_SASLEXTERNAL_UPDATED_CERT_MAPPER_DN,
                     "Attribute " + ATTR_CERTMAPPER_DN +
                     " in configuration entry %s has been updated.  " +
                     "Certificate mapper %s will now be used to map " +
-                    "certificates to user entries.");
+                    "certificates to user entries");
 
 
     registerMessage(MSGID_STARTTLS_NO_CLIENT_CONNECTION,
                     "StartTLS cannot be used on this connection because the " +
-                    "underlying client connection is not available.");
+                    "underlying client connection is not available");
     registerMessage(MSGID_STARTTLS_NOT_TLS_CAPABLE,
                     "StartTLS cannot be used on this client connection " +
                     "because this connection type is not capable of using " +
-                    "StartTLS to protect its communication.");
+                    "StartTLS to protect its communication");
     registerMessage(MSGID_STARTTLS_ERROR_ON_ENABLE,
                     "An unexpected error occurred while attempting to enable " +
                     "the TLS connection security manager on the client " +
-                    "connection for the purpose of StartTLS:  %s.");
+                    "connection for the purpose of StartTLS:  %s");
     registerMessage(MSGID_STARTTLS_ERROR_SENDING_CLEAR_RESPONSE,
                     "An unexpected error occurred while attempting to " +
                     "send the clear-text response to the client after " +
-                    "starting TLS negotiation:  %s.");
+                    "starting TLS negotiation:  %s");
 
 
 
@@ -5852,587 +5852,587 @@
                     "the configuration for the identity mapper that should " +
                     "be used to map the provided username to a Directory " +
                     "Server user entry.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_SASLPLAIN_NO_IDENTITY_MAPPER_ATTR,
                     "Configuration entry %s does not contain attribute " +
                     ATTR_IDMAPPER_DN + " which specifies the DN of the " +
                     "identity mapper to use in conjunction with the PLAIN " +
-                    "SASL mechanism.  This is a required attribute.");
+                    "SASL mechanism.  This is a required attribute");
     registerMessage(MSGID_SASLPLAIN_NO_SUCH_IDENTITY_MAPPER,
                     "The identity mapper %s specified in attribute " +
                     ATTR_IDMAPPER_DN + " of configuration entry %s does not " +
                     "reference a valid identity mapper configuration that is " +
-                    "enabled for use in the Directory Server.");
+                    "enabled for use in the Directory Server");
     registerMessage(MSGID_SASLPLAIN_CANNOT_GET_IDENTITY_MAPPER,
                     "An error occurred while trying to process the value " +
                     "of the " + ATTR_IDMAPPER_DN + " attribute in " +
                     "configuration entry %s to determine which identity " +
                     "mapper should be used in conjunction with the PLAIN " +
-                    "SASL mechanism:  %s.");
+                    "SASL mechanism:  %s");
     registerMessage(MSGID_SASLPLAIN_DESCRIPTION_USERNAME_ATTRIBUTE,
                     "Specifies the name of the attribute that will be used " +
                     "to identify user entries based on the authcID/authzID " +
                     "provided during SASL PLAIN authentication.  This must " +
                     "specify the name of a valid attribute type defined in " +
                     "the server schema.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_SASLPLAIN_CANNOT_GET_USERNAME_ATTR,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " + ATTR_USERNAME_ATTRIBUTE +
-                    " attribute in configuration entry %s:  %s.");
+                    " attribute in configuration entry %s:  %s");
     registerMessage(MSGID_SASLPLAIN_UNKNOWN_USERNAME_ATTR,
                     "The attribute %s referenced in configuration attribute " +
                     ATTR_USERNAME_ATTRIBUTE + " in configuration entry %s " +
                     "does not exist in the Directory Server schema.  The " +
                     "attribute that is to be used for username lookups " +
                     "during SASL PLAIN authentication must be defined in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_SASLPLAIN_DESCRIPTION_USER_BASE_DN,
                     "Specifies the base DN that should be used when " +
                     "searching for entries based on the authcID/authzID " +
                     "provided during SASL PLAIN authentication.  Changes to " +
                     "this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_SASLPLAIN_CANNOT_GET_USER_BASE_DN,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " + ATTR_USER_BASE_DN +
-                    " attribute in configuration entry %s:  %s.");
+                    " attribute in configuration entry %s:  %s");
     registerMessage(MSGID_SASLPLAIN_NO_SASL_CREDENTIALS,
                     "SASL PLAIN authentication requires that SASL " +
                     "credentials be provided but none were included in the " +
-                    "bind request.");
+                    "bind request");
     registerMessage(MSGID_SASLPLAIN_NO_NULLS_IN_CREDENTIALS,
                     "The SASL PLAIN bind request did not include any NULL " +
                     "characters.  NULL characters are required as delimiters " +
                     "between the authorization ID and authentication ID, and " +
-                    "also between the authentication ID and the password.");
+                    "also between the authentication ID and the password");
     registerMessage(MSGID_SASLPLAIN_NO_SECOND_NULL,
                     "The SASL PLAIN bind request did not include a second " +
                     "NULL character in the credentials, which is required as " +
                     "a delimiter between the authentication ID and the " +
-                    "password.");
+                    "password");
     registerMessage(MSGID_SASLPLAIN_ZERO_LENGTH_AUTHCID,
                     "The authentication ID contained in the SASL PLAIN bind " +
                     "request had a length of zero characters, which is not " +
                     "allowed.  SASL PLAIN authentication does not allow an " +
-                    "empty string for use as the authentication ID.");
+                    "empty string for use as the authentication ID");
     registerMessage(MSGID_SASLPLAIN_ZERO_LENGTH_PASSWORD,
                     "The password contained in the SASL PLAIN bind request " +
                     "had a length of zero characters, which is not allowed.  " +
                     "SASL PLAIN authentication does not allow an empty " +
-                    "string for use as the password.");
+                    "string for use as the password");
     registerMessage(MSGID_SASLPLAIN_CANNOT_DECODE_AUTHCID_AS_DN,
                     "An error occurred while attempting to decode the SASL " +
                     "PLAIN authentication ID \"%s\" because it appeared to " +
-                    "contain a DN but DN decoding failed:  %s.");
+                    "contain a DN but DN decoding failed:  %s");
     registerMessage(MSGID_SASLPLAIN_AUTHCID_IS_NULL_DN,
                     "The authentication ID in the SASL PLAIN bind request " +
-                    "appears to be an empty DN.  This is not allowed.");
+                    "appears to be an empty DN.  This is not allowed");
     registerMessage(MSGID_SASLPLAIN_CANNOT_GET_ENTRY_BY_DN,
                     "An error occurred while attempting to retrieve user " +
                     "entry %s as specified in the DN-based authentication ID " +
-                    "of a SASL PLAIN bind request:  %s.");
+                    "of a SASL PLAIN bind request:  %s");
     registerMessage(MSGID_SASLPLAIN_CANNOT_MAP_USERNAME,
                     "An error occurred while attempting to map username %s " +
-                    "to a Directory Server entry:  %s.");
+                    "to a Directory Server entry:  %s");
     registerMessage(MSGID_SASLPLAIN_CANNOT_PERFORM_INTERNAL_SEARCH,
                     "An error occurred while trying to perform an internal " +
                     "search to retrieve the user entry associated with the " +
                     "SASL PLAIN authentication ID %s.  The result of that " +
-                    "search was %s with a message of %s.");
+                    "search was %s with a message of %s");
     registerMessage(MSGID_SASLPLAIN_MULTIPLE_MATCHING_ENTRIES,
                     "The internal search attempting to resolve SASL PLAIN " +
                     "authentication ID %s matched multiple entries.  " +
                     "Authentication cannot succeed unless the authentication " +
-                    "ID is mapped to exactly one user entry.");
+                    "ID is mapped to exactly one user entry");
     registerMessage(MSGID_SASLPLAIN_NO_MATCHING_ENTRIES,
                     "The server was not able to find any user entries for " +
-                    "the provided authentication ID of %s.");
+                    "the provided authentication ID of %s");
     registerMessage(MSGID_SASLPLAIN_AUTHZID_INVALID_DN,
                     "The provided authorization ID %s contained an invalid " +
-                    "DN:  %s.");
+                    "DN:  %s");
     registerMessage(MSGID_SASLPLAIN_AUTHZID_INSUFFICIENT_PRIVILEGES,
                     "The authenticating user %s does not have sufficient " +
-                    "privileges to specify an alternate authorization ID.");
+                    "privileges to specify an alternate authorization ID");
     registerMessage(MSGID_SASLPLAIN_AUTHZID_NO_SUCH_ENTRY,
                     "The entry corresponding to authorization DN %s does not " +
-                    "exist in the Directory Server.");
+                    "exist in the Directory Server");
     registerMessage(MSGID_SASLPLAIN_AUTHZID_CANNOT_GET_ENTRY,
                     "An error occurred while attempting to retrieve entry %s " +
-                    "specified as the authorization ID:  %s.");
+                    "specified as the authorization ID:  %s");
     registerMessage(MSGID_SASLPLAIN_AUTHZID_NO_MAPPED_ENTRY,
                     "No entry corresponding to authorization ID %s was found " +
-                    "in the server.");
+                    "in the server");
     registerMessage(MSGID_SASLPLAIN_AUTHZID_CANNOT_MAP_AUTHZID,
                     "An error occurred while attempting to map authorization " +
-                    "ID %s to a user entry:  %s.");
+                    "ID %s to a user entry:  %s");
     registerMessage(MSGID_SASLPLAIN_NO_PW_ATTR,
                     "The SASL PLAIN authentication failed because the mapped " +
                     "user entry did not contain any values for the %s " +
-                    "attribute.");
+                    "attribute");
     registerMessage(MSGID_SASLPLAIN_UNKNOWN_STORAGE_SCHEME,
                     "A password in the target user entry %s could not be " +
                     "processed via SASL PLAIN because that password has an " +
-                    "unknown storage scheme of %s.");
+                    "unknown storage scheme of %s");
     registerMessage(MSGID_SASLPLAIN_INVALID_PASSWORD,
-                    "The provided password is invalid.");
+                    "The provided password is invalid");
     registerMessage(MSGID_SASLPLAIN_CANNOT_CHECK_PASSWORD_VALIDITY,
                     "An error occurred while attempting to verify the " +
                     "password for user %s during SASL PLAIN authentication:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_SASLPLAIN_UPDATED_IDENTITY_MAPPER,
                     "Attribute " + ATTR_IDMAPPER_DN +
                     " in configuration entry %s has been updated.  The " +
                     "identity mapper defined in configuration entry %s " +
                     "will now be used to map usernames to entries when " +
-                    "processing SASL PLAIN bind requests.");
+                    "processing SASL PLAIN bind requests");
     registerMessage(MSGID_SASLPLAIN_UPDATED_USERNAME_ATTR,
                     "Attribute " + ATTR_USERNAME_ATTRIBUTE +
                     " in configuration entry %s has been updated.  The %s " +
                     "attribute will now be used when looking up user entries " +
-                    "based on their authcID/authzID.");
+                    "based on their authcID/authzID");
     registerMessage(MSGID_SASLPLAIN_UPDATED_USER_BASE_DN,
                     "Attribute " + ATTR_USER_BASE_DN +
                     " in configuration entry %s has been updated.  The DN %s " +
                     "will now be used as the search base when looking up " +
-                    "user entries based on their authcID/authzID.");
+                    "user entries based on their authcID/authzID");
     registerMessage(MSGID_SASLPLAIN_CANNOT_LOCK_ENTRY,
                     "The Directory Server was unable to obtain a read lock " +
-                    "on user entry %s in order to retrieve that entry.");
+                    "on user entry %s in order to retrieve that entry");
 
 
     registerMessage(MSGID_SASLANONYMOUS_TRACE,
                     "SASL ANONYMOUS bind operation (conn=%d, op=%d) provided " +
-                    "trace information:  %s.");
+                    "trace information:  %s");
 
 
     registerMessage(MSGID_SASLCRAMMD5_CANNOT_GET_MESSAGE_DIGEST,
                     "An unexpected error occurred while attempting to obtain " +
                     "an MD5 digest engine for use by the CRAM-MD5 SASL " +
-                    "handler:  %s.");
+                    "handler:  %s");
     registerMessage(MSGID_SASLCRAMMD5_DESCRIPTION_IDENTITY_MAPPER_DN,
                     "Specifies the DN of the configuration entry that holds " +
                     "the configuration for the identity mapper that should " +
                     "be used to map the CRAM-MD5 username to a Directory " +
                     "Server user entry.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_SASLCRAMMD5_NO_IDENTITY_MAPPER_ATTR,
                     "Configuration entry %s does not contain attribute " +
                     ATTR_IDMAPPER_DN + " which specifies the DN of the " +
                     "identity mapper to use in conjunction with the CRAM-MD5 " +
-                    "SASL mechanism.  This is a required attribute.");
+                    "SASL mechanism.  This is a required attribute");
     registerMessage(MSGID_SASLCRAMMD5_NO_SUCH_IDENTITY_MAPPER,
                     "The identity mapper %s specified in attribute " +
                     ATTR_IDMAPPER_DN + " of configuration entry %s does not " +
                     "reference a valid identity mapper configuration that is " +
-                    "enabled for use in the Directory Server.");
+                    "enabled for use in the Directory Server");
     registerMessage(MSGID_SASLCRAMMD5_CANNOT_GET_IDENTITY_MAPPER,
                     "An error occurred while trying to process the value " +
                     "of the " + ATTR_IDMAPPER_DN + " attribute in " +
                     "configuration entry %s to determine which identity " +
                     "mapper should be used in conjunction with the CRAM-MD5 " +
-                    "SASL mechanism:  %s.");
+                    "SASL mechanism:  %s");
     registerMessage(MSGID_SASLCRAMMD5_DESCRIPTION_USERNAME_ATTRIBUTE,
                     "Specifies the name of the attribute that will be used " +
                     "to identify user entries based on the username provided " +
                     "during SASL CRAM-MD5 authentication.  This must specify " +
                     "the name of a valid attribute type defined in the " +
                     "server schema.  Changes to this configuration attribute " +
-                    "will take effect immediately.");
+                    "will take effect immediately");
     registerMessage(MSGID_SASLCRAMMD5_CANNOT_GET_USERNAME_ATTR,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " + ATTR_USERNAME_ATTRIBUTE +
-                    " attribute in configuration entry %s:  %s.");
+                    " attribute in configuration entry %s:  %s");
     registerMessage(MSGID_SASLCRAMMD5_UNKNOWN_USERNAME_ATTR,
                     "The attribute %s referenced in configuration attribute " +
                     ATTR_USERNAME_ATTRIBUTE + " in configuration entry %s " +
                     "does not exist in the Directory Server schema.  The " +
                     "attribute that is to be used for username lookups " +
                     "during SASL CRAM-MD5 authentication must be defined in " +
-                    "the server schema.");
+                    "the server schema");
     registerMessage(MSGID_SASLCRAMMD5_DESCRIPTION_USER_BASE_DN,
                     "Specifies the base DN that should be used when " +
                     "searching for entries based on the username provided " +
                     "during SASL CRAM-MD5 authentication.  Changes to this " +
-                    "configuration attribute will take effect immediately.");
+                    "configuration attribute will take effect immediately");
     registerMessage(MSGID_SASLCRAMMD5_CANNOT_GET_USER_BASE_DN,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " + ATTR_USER_BASE_DN +
-                    " attribute in configuration entry %s:  %s.");
+                    " attribute in configuration entry %s:  %s");
     registerMessage(MSGID_SASLCRAMMD5_NO_STORED_CHALLENGE,
                     "The SASL CRAM-MD5 bind request contained SASL " +
                     "credentials but there is no stored challenge for this " +
                     "client connection.  The first CRAM-MD5 bind request in " +
                     "the two-stage process must not contain client SASL " +
-                    "credentials.");
+                    "credentials");
     registerMessage(MSGID_SASLCRAMMD5_INVALID_STORED_CHALLENGE,
                     "The SASL CRAM-MD5 bind request contained SASL " +
                     "credentials, but the stored SASL state information for " +
                     "this client connection is not in an appropriate form " +
-                    "for the challenge.");
+                    "for the challenge");
     registerMessage(MSGID_SASLCRAMMD5_NO_SPACE_IN_CREDENTIALS,
                     "The SASL CRAM-MD5 bind request from the client included " +
                     "SASL credentials but there was no space to separate " +
-                    "the username from the authentication digest.");
+                    "the username from the authentication digest");
     registerMessage(MSGID_SASLCRAMMD5_INVALID_DIGEST_LENGTH,
                     "The SASL CRAM-MD5 bind request included SASL " +
                     "credentials, but the decoded digest string had an " +
                     "invalid length of %d bytes rather than the %d bytes " +
-                    "expected for a hex representation of an MD5 digest.");
+                    "expected for a hex representation of an MD5 digest");
     registerMessage(MSGID_SASLCRAMMD5_INVALID_DIGEST_CONTENT,
                     "The SASL CRAM-MD5 bind request included SASL " +
                     "credentials, but the decoded digest was not comprised " +
-                    "of only hexadecimal digits:  %s.");
+                    "of only hexadecimal digits:  %s");
     registerMessage(MSGID_SASLCRAMMD5_CANNOT_DECODE_USERNAME_AS_DN,
                     "An error occurred while attempting to decode the SASL " +
                     "CRAM-MD5 username \"%s\" because it appeared to contain " +
-                    "a DN but DN decoding failed:  %s.");
+                    "a DN but DN decoding failed:  %s");
     registerMessage(MSGID_SASLCRAMMD5_USERNAME_IS_NULL_DN,
                     "The username in the SASL CRAM-MD5 bind request appears " +
-                    "to be an empty DN.  This is not allowed.");
+                    "to be an empty DN.  This is not allowed");
     registerMessage(MSGID_SASLCRAMMD5_CANNOT_LOCK_ENTRY,
                     "The Directory Server was unable to obtain a read lock " +
-                    "on user entry %s in order to retrieve that entry.");
+                    "on user entry %s in order to retrieve that entry");
     registerMessage(MSGID_SASLCRAMMD5_CANNOT_GET_ENTRY_BY_DN,
                     "An error occurred while attempting to retrieve user " +
                     "entry %s as specified in the DN-based username of a " +
-                    "SASL CRAM-MD5 bind request:  %s.");
+                    "SASL CRAM-MD5 bind request:  %s");
     registerMessage(MSGID_SASLCRAMMD5_CANNOT_MAP_USERNAME,
                     "An error occurred while attempting to map username %s " +
-                    "to a Directory Server entry:  %s.");
+                    "to a Directory Server entry:  %s");
     registerMessage(MSGID_SASLCRAMMD5_ZERO_LENGTH_USERNAME,
                     "The username contained in the SASL CRAM-MD5 bind " +
                     "request had a length of zero characters, which is not " +
                     "allowed.  CRAM-MD5 authentication does not allow an " +
-                    "empty string for use as the username.");
+                    "empty string for use as the username");
     registerMessage(MSGID_SASLCRAMMD5_CANNOT_PERFORM_INTERNAL_SEARCH,
                     "An error occurred while trying to perform an internal " +
                     "search to retrieve the user entry associated with the " +
                     "SASL CRAM-MD5 username %s.  The result of that " +
-                    "search was %s with a message of %s.");
+                    "search was %s with a message of %s");
     registerMessage(MSGID_SASLCRAMMD5_MULTIPLE_MATCHING_ENTRIES,
                     "The internal search attempting to resolve SASL CRAM-MD5 " +
                     "username %s matched multiple entries.  Authentication " +
                     "cannot succeed unless the username is mapped to exactly " +
-                    "one user entry.");
+                    "one user entry");
     registerMessage(MSGID_SASLCRAMMD5_NO_MATCHING_ENTRIES,
                     "The server was not able to find any user entries for " +
-                    "the provided username of %s.");
+                    "the provided username of %s");
     registerMessage(MSGID_SASLCRAMMD5_NO_PW_ATTR,
                     "The SASL CRAM-MD5 authentication failed because the " +
                     "mapped user entry did not contain any values for the %s " +
-                    "attribute.");
+                    "attribute");
     registerMessage(MSGID_SASLCRAMMD5_UNKNOWN_STORAGE_SCHEME,
                     "A password in the target user entry %s could not be " +
                     "processed via SASL CRAM-MD5 because that password has " +
-                    "an unknown storage scheme of %s.");
+                    "an unknown storage scheme of %s");
     registerMessage(MSGID_SASLCRAMMD5_CANNOT_GET_CLEAR_PASSWORD,
                     "An error occurred while attempting to obtain the " +
                     "clear-text password for user %s from the value with " +
-                    "storage scheme %s:  %s.");
+                    "storage scheme %s:  %s");
     registerMessage(MSGID_SASLCRAMMD5_INVALID_PASSWORD,
-                    "The provided password is invalid.");
+                    "The provided password is invalid");
     registerMessage(MSGID_SASLCRAMMD5_NO_REVERSIBLE_PASSWORDS,
                     "SASL CRAM-MD5 authentication is not possible for user " +
                     "%s because none of the passwords in the user entry are " +
-                    "stored in a reversible form.");
+                    "stored in a reversible form");
     registerMessage(MSGID_SASLCRAMMD5_CANNOT_GET_REVERSIBLE_PASSWORDS,
                     "An error occurred while attempting to retrieve the " +
                     "clear-text password(s) for user %s in order to perform " +
-                    "SASL CRAM-MD5 authentication:  %s.");
+                    "SASL CRAM-MD5 authentication:  %s");
     registerMessage(MSGID_SASLCRAMMD5_UPDATED_IDENTITY_MAPPER,
                     "Attribute " + ATTR_IDMAPPER_DN +
                     " in configuration entry %s has been updated.  The " +
                     "identity mapper defined in configuration entry %s " +
                     "will now be used to map usernames to entries when " +
-                    "processing SASL CRAM-MD5 bind requests.");
+                    "processing SASL CRAM-MD5 bind requests");
     registerMessage(MSGID_SASLCRAMMD5_UPDATED_USERNAME_ATTR,
                     "Attribute " + ATTR_USERNAME_ATTRIBUTE +
                     " in configuration entry %s has been updated.  The %s " +
                     "attribute will now be used when looking up user entries " +
-                    "based on their username.");
+                    "based on their username");
     registerMessage(MSGID_SASLCRAMMD5_UPDATED_USER_BASE_DN,
                     "Attribute " + ATTR_USER_BASE_DN +
                     " in configuration entry %s has been updated.  The DN %s " +
                     "will now be used as the search base when looking up " +
-                    "user entries based on their username.");
+                    "user entries based on their username");
 
 
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_GET_MESSAGE_DIGEST,
                     "An unexpected error occurred while attempting to obtain " +
                     "an MD5 digest engine for use by the DIGEST-MD5 SASL " +
-                    "handler:  %s.");
+                    "handler:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_DESCRIPTION_IDENTITY_MAPPER_DN,
                     "Specifies the DN of the configuration entry that holds " +
                     "the configuration for the identity mapper that should " +
                     "be used to map the DIGEST-MD5 username to a Directory " +
                     "Server user entry.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_SASLDIGESTMD5_NO_IDENTITY_MAPPER_ATTR,
                     "Configuration entry %s does not contain attribute " +
                     ATTR_IDMAPPER_DN + " which specifies the DN of the " +
                     "identity mapper to use in conjunction with the " +
                     "DIGEST-MD5 SASL mechanism.  This is a required " +
-                    "attribute.");
+                    "attribute");
     registerMessage(MSGID_SASLDIGESTMD5_NO_SUCH_IDENTITY_MAPPER,
                     "The identity mapper %s specified in attribute " +
                     ATTR_IDMAPPER_DN + " of configuration entry %s does not " +
                     "reference a valid identity mapper configuration that is " +
-                    "enabled for use in the Directory Server.");
+                    "enabled for use in the Directory Server");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_GET_IDENTITY_MAPPER,
                     "An error occurred while trying to process the value " +
                     "of the " + ATTR_IDMAPPER_DN + " attribute in " +
                     "configuration entry %s to determine which identity " +
                     "mapper should be used in conjunction with the " +
-                    "DIGEST-MD5 SASL mechanism:  %s.");
+                    "DIGEST-MD5 SASL mechanism:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_DESCRIPTION_USERNAME_ATTRIBUTE,
                     "Specifies the name of the attribute that will be used " +
                     "to identify user entries based on the username provided " +
                     "during SASL DIGEST-MD5 authentication.  This must " +
                     "specify the name of a valid attribute type defined in " +
                     "the server schema.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_GET_USERNAME_ATTR,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " + ATTR_USERNAME_ATTRIBUTE +
-                    " attribute in configuration entry %s:  %s.");
+                    " attribute in configuration entry %s:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_UNKNOWN_USERNAME_ATTR,
                     "The attribute %s referenced in configuration attribute " +
                     ATTR_USERNAME_ATTRIBUTE + " in configuration entry %s " +
                     "does not exist in the Directory Server schema.  The " +
                     "attribute that is to be used for username lookups " +
                     "during SASL DIGEST-MD5 authentication must be defined " +
-                    "in the server schema.");
+                    "in the server schema");
     registerMessage(MSGID_SASLDIGESTMD5_DESCRIPTION_USER_BASE_DN,
                     "Specifies the base DN that should be used when " +
                     "searching for entries based on the username provided " +
                     "during SASL DIGEST-MD5 authentication.  Changes to this " +
-                    "configuration attribute will take effect immediately.");
+                    "configuration attribute will take effect immediately");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_GET_USER_BASE_DN,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " + ATTR_USER_BASE_DN +
-                    " attribute in configuration entry %s:  %s.");
+                    " attribute in configuration entry %s:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_DESCRIPTION_REALM,
                     "Specifies the realm that should be used by the server " +
                     "for DIGEST-MD5 authentication.  If this is not " +
                     "provided, then the server will default to using a set " +
                     "of realm names that correspond to the defined " +
                     "suffixes.  Changes to this configuration attribute will " +
-                    "take effect immediately.");
+                    "take effect immediately");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_GET_REALM,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " + ATTR_DIGESTMD5_REALM +
-                    " attribute in configuration entry %s:  %s.");
+                    " attribute in configuration entry %s:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_CHALLENGE_TOO_LONG,
                     "The initial DIGEST-MD5 must be less than 2048 bytes, " +
-                    "but the generated challenge was %d bytes.");
+                    "but the generated challenge was %d bytes");
     registerMessage(MSGID_SASLDIGESTMD5_NO_STORED_STATE,
                     "The SASL DIGEST-MD5 bind request contained SASL " +
                     "credentials but there is no stored SASL state " +
                     "information for this client connection.  If this is " +
                     "an initial authentication, then the client must not " +
-                    "provide any SASL credentials.");
+                    "provide any SASL credentials");
     registerMessage(MSGID_SASLDIGESTMD5_INVALID_STORED_STATE,
                     "The SASL DIGEST-MD5 bind request contained SASL " +
                     "credentials, but the stored SASL state information for " +
                     "this client connection is not in an appropriate form " +
-                    "for the challenge.");
+                    "for the challenge");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_PARSE_ISO_CREDENTIALS,
                     "An error occurred while attempting to parse the " +
                     "DIGEST-MD5 credentials as a string using the %s " +
-                    "character set:  %s.  The server will re-try using UTF-8.");
+                    "character set:  %s.  The server will re-try using UTF-8");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_PARSE_UTF8_CREDENTIALS,
                     "An error occurred while attempting to parse the " +
                     "DIGEST-MD5 credentials as a string using the UTF-8 " +
-                    "character set:  %s.");
+                    "character set:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_INVALID_TOKEN_IN_CREDENTIALS,
                     "The DIGEST-MD5 credentials provided by the client " +
                     "contained an invalid token of \"%s\" starting at " +
-                    "position %d.");
+                    "position %d");
     registerMessage(MSGID_SASLDIGESTMD5_INVALID_CHARSET,
                     "The DIGEST-MD5 credentials provided by the client " +
                     "specified an invalid character set of %s.  Only a value " +
-                    "of 'utf-8' is acceptable for this parameter.");
+                    "of 'utf-8' is acceptable for this parameter");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_DECODE_REALM_AS_DN,
                     "An error occurred while attempting to parse the " +
                     "provided response realm \"%s\" as a DN:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_INVALID_REALM,
                     "The DIGEST-MD5 credentials provided by the client " +
-                    "included an invalid realm of \"%s\".");
+                    "included an invalid realm of \"%s\"");
     registerMessage(MSGID_SASLDIGESTMD5_INVALID_NONCE,
                     "The DIGEST-MD5 credentials provided by the client " +
                     "included a nonce that was different from the nonce " +
                     "supplied by the server.  This could indicate a replay " +
                     "attack or a chosen plaintext attack, and as a result " +
-                    "the client connection will be terminated.");
+                    "the client connection will be terminated");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_DECODE_NONCE_COUNT,
                     "The DIGEST-MD5 credentials provided by the client " +
                     "included a nonce count \"%s\" that could not be decoded " +
-                    "as a hex-encoded integer.");
+                    "as a hex-encoded integer");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_DECODE_STORED_NONCE_COUNT,
                     "An unexpected error occurred while attempting to decode " +
                     "the nonce count stored by the server for this client " +
-                    "connection:  %s.");
+                    "connection:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_INVALID_NONCE_COUNT,
                     "The DIGEST-MD5 credentials provided by the client " +
                     "included a nonce count that was different from the " +
                     "count expected by the server.  This could indicate a " +
                     "replay attack, and as a result the client connection " +
-                    "will be terminated.");
+                    "will be terminated");
     registerMessage(MSGID_SASLDIGESTMD5_INTEGRITY_NOT_SUPPORTED,
                     "The client requested the auth-int quality of protection " +
                     "but integrity protection is not currently supported by " +
-                    "the Directory Server.");
+                    "the Directory Server");
     registerMessage(MSGID_SASLDIGESTMD5_CONFIDENTIALITY_NOT_SUPPORTED,
                     "The client requested the auth-conf quality of " +
                     "protection but confidentiality protection is not " +
-                    "currently supported by the Directory Server.");
+                    "currently supported by the Directory Server");
     registerMessage(MSGID_SASLDIGESTMD5_INVALID_QOP,
                     "The DIGEST-MD5 credentials provided by the client " +
                     "requested an invalid quality of protection mechanism of " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_PARSE_RESPONSE_DIGEST,
                     "The DIGEST-MD5 credentials provided by the client " +
                     "included a digest that could not be decoded as a " +
-                    "hex-encoded byte sequence:  %s.");
+                    "hex-encoded byte sequence:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_INVALID_RESPONSE_TOKEN,
                     "The DIGEST-MD5 credentials provided by the client " +
-                    "included an invalid token named \"%s\".");
+                    "included an invalid token named \"%s\"");
     registerMessage(MSGID_SASLDIGESTMD5_NO_USERNAME_IN_RESPONSE,
                     "The DIGEST-MD5 credentials provided by the client did " +
-                    "not contain the required \"username\" token.");
+                    "not contain the required \"username\" token");
     registerMessage(MSGID_SASLDIGESTMD5_NO_NONCE_IN_RESPONSE,
                     "The DIGEST-MD5 credentials provided by the client did " +
-                    "not contain the required \"nonce\" token.");
+                    "not contain the required \"nonce\" token");
     registerMessage(MSGID_SASLDIGESTMD5_NO_CNONCE_IN_RESPONSE,
                     "The DIGEST-MD5 credentials provided by the client did " +
-                    "not contain the required \"cnonce\" token.");
+                    "not contain the required \"cnonce\" token");
     registerMessage(MSGID_SASLDIGESTMD5_NO_NONCE_COUNT_IN_RESPONSE,
                     "The DIGEST-MD5 credentials provided by the client did " +
-                    "not contain the required \"nc\" token.");
+                    "not contain the required \"nc\" token");
     registerMessage(MSGID_SASLDIGESTMD5_NO_DIGEST_URI_IN_RESPONSE,
                     "The DIGEST-MD5 credentials provided by the client did " +
-                    "not contain the required \"digest-uri\" token.");
+                    "not contain the required \"digest-uri\" token");
     registerMessage(MSGID_SASLDIGESTMD5_NO_DIGEST_IN_RESPONSE,
                     "The DIGEST-MD5 credentials provided by the client did " +
-                    "not contain the required \"response\" token.");
+                    "not contain the required \"response\" token");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_DECODE_USERNAME_AS_DN,
                     "An error occurred while attempting to decode the SASL " +
                     "DIGEST-MD5 username \"%s\" because it appeared to " +
-                    "contain a DN but DN decoding failed:  %s.");
+                    "contain a DN but DN decoding failed:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_USERNAME_IS_NULL_DN,
                     "The username in the SASL DIGEST-MD5 bind request " +
-                    "appears to be an empty DN.  This is not allowed.");
+                    "appears to be an empty DN.  This is not allowed");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_LOCK_ENTRY,
                     "The Directory Server was unable to obtain a read lock " +
-                    "on user entry %s in order to retrieve that entry.");
+                    "on user entry %s in order to retrieve that entry");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_GET_ENTRY_BY_DN,
                     "An error occurred while attempting to retrieve user " +
                     "entry %s as specified in the DN-based username of a " +
-                    "SASL DIGEST-MD5 bind request:  %s.");
+                    "SASL DIGEST-MD5 bind request:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_ZERO_LENGTH_USERNAME,
                     "The username contained in the SASL DIGEST-MD5 bind " +
                     "request had a length of zero characters, which is not " +
                     "allowed.  DIGEST-MD5 authentication does not allow an " +
-                    "empty string for use as the username.");
+                    "empty string for use as the username");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_MAP_USERNAME,
                     "An error occurred while attempting to map username %s " +
-                    "to a Directory Server entry:  %s.");
+                    "to a Directory Server entry:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_PERFORM_INTERNAL_SEARCH,
                     "An error occurred while trying to perform an internal " +
                     "search to retrieve the user entry associated with the " +
                     "SASL DIGEST-MD5 username %s.  The result of that " +
-                    "search was %s with a message of %s.");
+                    "search was %s with a message of %s");
     registerMessage(MSGID_SASLDIGESTMD5_MULTIPLE_MATCHING_ENTRIES,
                     "The internal search attempting to resolve SASL " +
                     "DIGEST-MD5 username %s matched multiple entries.  " +
                     "Authentication cannot succeed unless the username is " +
-                    "mapped to exactly one user entry.");
+                    "mapped to exactly one user entry");
     registerMessage(MSGID_SASLDIGESTMD5_NO_MATCHING_ENTRIES,
                     "The server was not able to find any user entries for " +
-                    "the provided username of %s.");
+                    "the provided username of %s");
     registerMessage(MSGID_SASLDIGESTMD5_EMPTY_AUTHZID,
                     "The provided authorization ID was empty, which is not " +
-                    "allowed for DIGEST-MD5 authentication.");
+                    "allowed for DIGEST-MD5 authentication");
     registerMessage(MSGID_SASLDIGESTMD5_AUTHZID_INVALID_DN,
                     "The provided authorization ID %s contained an invalid " +
-                    "DN:  %s.");
+                    "DN:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_AUTHZID_INSUFFICIENT_PRIVILEGES,
                     "The authenticating user %s does not have sufficient " +
-                    "privileges to assume a different authorization identity.");
+                    "privileges to assume a different authorization identity");
     registerMessage(MSGID_SASLDIGESTMD5_AUTHZID_NO_SUCH_ENTRY,
                     "The entry %s specified as the authorization identity " +
-                    "does not exist.");
+                    "does not exist");
     registerMessage(MSGID_SASLDIGESTMD5_AUTHZID_CANNOT_GET_ENTRY,
                     "The entry %s specified as the authorization identity " +
-                    "could not be retrieved:  %s.");
+                    "could not be retrieved:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_AUTHZID_NO_MAPPED_ENTRY,
                     "The server was unable to find any entry corresponding " +
-                    "to authorization ID %s.");
+                    "to authorization ID %s");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_MAP_AUTHZID,
                     "An error occurred while attempting to map authorization " +
-                    "ID %s to a user entry:  %s.");
+                    "ID %s to a user entry:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_NO_PW_ATTR,
                     "The SASL DIGEST-MD5 authentication failed because the " +
                     "mapped user entry did not contain any values for the %s " +
-                    "attribute.");
+                    "attribute");
     registerMessage(MSGID_SASLDIGESTMD5_UNKNOWN_STORAGE_SCHEME,
                     "A password in the target user entry %s could not be " +
                     "processed via SASL DIGEST-MD5 because that password has " +
-                    "an unknown storage scheme of %s.");
+                    "an unknown storage scheme of %s");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_GET_CLEAR_PASSWORD,
                     "An error occurred while attempting to obtain the " +
                     "clear-text password for user %s from the value with " +
-                    "storage scheme %s:  %s.");
+                    "storage scheme %s:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_INVALID_CREDENTIALS,
                     "The DIGEST-MD5 credentials provided by the client are " +
                     "not appropriate for any password in the associated user " +
-                    "account.");
+                    "account");
     registerMessage(MSGID_SASLDIGESTMD5_NO_REVERSIBLE_PASSWORDS,
                     "SASL DIGEST-MD5 authentication is not possible for user " +
                     "%s because none of the passwords in the user entry are " +
-                    "stored in a reversible form.");
+                    "stored in a reversible form");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_GET_REVERSIBLE_PASSWORDS,
                     "An error occurred while attempting to retrieve the " +
                     "clear-text password(s) for user %s in order to perform " +
-                    "SASL DIGEST-MD5 authentication:  %s.");
+                    "SASL DIGEST-MD5 authentication:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_GENERATE_RESPONSE_DIGEST,
                     "An error occurred while attempting to generate a " +
                     "server-side digest to compare with the client " +
-                    "response:  %s.");
+                    "response:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_CANNOT_GENERATE_RESPONSE_AUTH_DIGEST,
                     "An error occurred while trying to generate the " +
                     "response auth digest to include in the server SASL " +
-                    "credentials:  %s.");
+                    "credentials:  %s");
     registerMessage(MSGID_SASLDIGESTMD5_INVALID_CLOSING_QUOTE_POS,
                     "The DIGEST-MD5 response challenge could not be parsed " +
-                    "because it had an invalid quotation mark at position %d.");
+                    "because it had an invalid quotation mark at position %d");
     registerMessage(MSGID_SASLDIGESTMD5_UPDATED_IDENTITY_MAPPER,
                     "Attribute " + ATTR_IDMAPPER_DN +
                     " in configuration entry %s has been updated.  The " +
                     "identity mapper defined in configuration entry %s " +
                     "will now be used to map usernames to entries when " +
-                    "processing SASL DIGEST-MD5 bind requests.");
+                    "processing SASL DIGEST-MD5 bind requests");
     registerMessage(MSGID_SASLDIGESTMD5_UPDATED_USERNAME_ATTR,
                     "Attribute " + ATTR_USERNAME_ATTRIBUTE +
                     " in configuration entry %s has been updated.  The %s " +
                     "attribute will now be used when looking up user entries " +
-                    "based on their username.");
+                    "based on their username");
     registerMessage(MSGID_SASLDIGESTMD5_UPDATED_USER_BASE_DN,
                     "Attribute " + ATTR_USER_BASE_DN +
                     " in configuration entry %s has been updated.  The DN %s " +
                     "will now be used as the search base when looking up " +
-                    "user entries based on their username.");
+                    "user entries based on their username");
     registerMessage(MSGID_SASLDIGESTMD5_UPDATED_NEW_REALM,
                     "Attribute " + ATTR_DIGESTMD5_REALM +
                     " in configuration entry %s has been updated.  The realm " +
                     "\"%s\" will now be advertised by the server in the " +
-                    "challenge response.");
+                    "challenge response");
     registerMessage(MSGID_SASLDIGESTMD5_UPDATED_NO_REALM,
                     "Attribute " + ATTR_DIGESTMD5_REALM +
                     " in configuration entry %s has been updated.  The " +
                     "realm(s) advertised by the server in the challenge " +
-                    "response will be the DNs of the server suffixes.");
+                    "response will be the DNs of the server suffixes");
 
 
     registerMessage(MSGID_SASLGSSAPI_DESCRIPTION_USERNAME_ATTRIBUTE,
@@ -6441,165 +6441,165 @@
                     "during SASL GSSAPI authentication.  This must " +
                     "specify the name of a valid attribute type defined in " +
                     "the server schema.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_SASLGSSAPI_CANNOT_GET_USERNAME_ATTR,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " + ATTR_USERNAME_ATTRIBUTE +
-                    " attribute in configuration entry %s:  %s.");
+                    " attribute in configuration entry %s:  %s");
     registerMessage(MSGID_SASLGSSAPI_UNKNOWN_USERNAME_ATTR,
                     "The attribute %s referenced in configuration attribute " +
                     ATTR_USERNAME_ATTRIBUTE + " in configuration entry %s " +
                     "does not exist in the Directory Server schema.  The " +
                     "attribute that is to be used for username lookups " +
                     "during SASL GSSAPI authentication must be defined " +
-                    "in the server schema.");
+                    "in the server schema");
     registerMessage(MSGID_SASLGSSAPI_DESCRIPTION_USER_BASE_DN,
                     "Specifies the base DN that should be used when " +
                     "searching for entries based on the username provided " +
                     "during SASL GSSAPI authentication.  Changes to this " +
-                    "configuration attribute will take effect immediately.");
+                    "configuration attribute will take effect immediately");
     registerMessage(MSGID_SASLGSSAPI_CANNOT_GET_USER_BASE_DN,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " + ATTR_USER_BASE_DN +
-                    " attribute in configuration entry %s:  %s.");
+                    " attribute in configuration entry %s:  %s");
     registerMessage(MSGID_SASLGSSAPI_DESCRIPTION_IDENTITY_MAPPER_DN,
                     "Specifies the DN of the configuration entry that holds " +
                     "the configuration for the identity mapper that should " +
                     "be used to map the GSSAPI principal to a Directory " +
                     "Server user entry.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_SASLGSSAPI_NO_IDENTITY_MAPPER_ATTR,
                     "Configuration entry %s does not contain attribute " +
                     ATTR_IDMAPPER_DN + " which specifies the DN of the " +
                     "identity mapper to use in conjunction with the GSSAPI " +
-                    "SASL mechanism.  This is a required attribute.");
+                    "SASL mechanism.  This is a required attribute");
     registerMessage(MSGID_SASLGSSAPI_NO_SUCH_IDENTITY_MAPPER,
                     "The identity mapper %s specified in attribute " +
                     ATTR_IDMAPPER_DN + " of configuration entry %s does not " +
                     "reference a valid identity mapper configuration that is " +
-                    "enabled for use in the Directory Server.");
+                    "enabled for use in the Directory Server");
     registerMessage(MSGID_SASLGSSAPI_CANNOT_GET_IDENTITY_MAPPER,
                     "An error occurred while trying to process the value " +
                     "of the " + ATTR_IDMAPPER_DN + " attribute in " +
                     "configuration entry %s to determine which identity " +
                     "mapper should be used in conjunction with the GSSAPI " +
-                    "SASL mechanism:  %s.");
+                    "SASL mechanism:  %s");
     registerMessage(MSGID_SASLGSSAPI_DESCRIPTION_SERVER_FQDN,
                     "Specifies the fully-qualified domain name that should " +
                     "be used for the server during SASL GSSAPI " +
                     "authentication.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_SASLGSSAPI_CANNOT_GET_SERVER_FQDN,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " + ATTR_SERVER_FQDN +
-                    " attribute in configuration entry %s:  %s.");
+                    " attribute in configuration entry %s:  %s");
     registerMessage(MSGID_SASLGSSAPI_UPDATED_USERNAME_ATTR,
                     "Attribute " + ATTR_USERNAME_ATTRIBUTE +
                     " in configuration entry %s has been updated.  The %s " +
                     "attribute will now be used when looking up user entries " +
-                    "based on their username.");
+                    "based on their username");
     registerMessage(MSGID_SASLGSSAPI_UPDATED_USER_BASE_DN,
                     "Attribute " + ATTR_USER_BASE_DN +
                     " in configuration entry %s has been updated.  The DN %s " +
                     "will now be used as the search base when looking up " +
-                    "user entries based on their username.");
+                    "user entries based on their username");
     registerMessage(MSGID_SASLGSSAPI_UPDATED_IDENTITY_MAPPER,
                     "Attribute " + ATTR_IDMAPPER_DN +
                     " in configuration entry %s has been updated.  The value " +
                     "\"%s\" will now be used as the DN of the identity " +
-                    "mapper configuration entry for GSSAPI authentication.");
+                    "mapper configuration entry for GSSAPI authentication");
     registerMessage(MSGID_SASLGSSAPI_UPDATED_NEW_SERVER_FQDN,
                     "Attribute " + ATTR_SERVER_FQDN +
                     " in configuration entry %s has been updated.  The value " +
                     "\"%s\" will now be used as the fully-qualified name of " +
-                    "the Directory Server for GSSAPI authentication.");
+                    "the Directory Server for GSSAPI authentication");
     registerMessage(MSGID_SASLGSSAPI_UPDATED_NO_SERVER_FQDN,
                     "Attribute " + ATTR_SERVER_FQDN +
                     " in configuration entry %s has been updated.  The " +
                     "Directory Server will attempt to determine its own " +
-                    "FQDN for use in GSSAPI authentication.");
+                    "FQDN for use in GSSAPI authentication");
     registerMessage(MSGID_SASLGSSAPI_UNEXPECTED_CALLBACK,
                     "An unexpected callback was provided for the SASL server " +
-                    "for use during GSSAPI authentication:  %s.");
+                    "for use during GSSAPI authentication:  %s");
     registerMessage(MSGID_SASLGSSAPI_DESCRIPTION_KDC_ADDRESS,
                     "Specifies the address of the KDC that should be used " +
                     "during SASL GSSAPI authentication.  If this is not " +
                     "specified, then an attempt will be made to obtain it " +
                     "from the system-wide Kerberos configuration.  Changes " +
                     "to this configuration attribute will take effect " +
-                    "immediately for subsequent GSSAPI bind attempts.");
+                    "immediately for subsequent GSSAPI bind attempts");
     registerMessage(MSGID_SASLGSSAPI_CANNOT_GET_KDC_ADDRESS,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " + ATTR_GSSAPI_KDC +
-                    " attribute in configuration entry %s:  %s.");
+                    " attribute in configuration entry %s:  %s");
     registerMessage(MSGID_SASLGSSAPI_DESCRIPTION_REALM,
                     "Specifies the default realm that should be used during " +
                     "SASL GSSAPI authentication.  If this is not specified, " +
                     "then an attempt will be made to obtain it from the " +
                     "system-wide Kerberos configuration.  Changes to this " +
                     "configuration attribute will take effect immediately " +
-                    "for subsequent GSSAPI bind attempts.");
+                    "for subsequent GSSAPI bind attempts");
     registerMessage(MSGID_SASLGSSAPI_CANNOT_GET_REALM,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " + ATTR_GSSAPI_REALM +
-                    " attribute in configuration entry %s:  %s.");
+                    " attribute in configuration entry %s:  %s");
     registerMessage(MSGID_SASLGSSAPI_NO_CLIENT_CONNECTION,
                     "No client connection was available for use in " +
-                    "processing the GSSAPI bind request.");
+                    "processing the GSSAPI bind request");
     registerMessage(MSGID_SASLGSSAPI_CANNOT_CREATE_SASL_SERVER,
                     "An error occurred while attempting to create the " +
                     "SASL server instance to process the GSSAPI bind " +
-                    "request:  %s.");
+                    "request:  %s");
     registerMessage(MSGID_SASLGSSAPI_CANNOT_EVALUATE_RESPONSE,
                     "An error occurred while attempting to evaluate the " +
                     "challenge response provided by the client in the " +
-                    "GSSAPI bind request:  %s.");
+                    "GSSAPI bind request:  %s");
     registerMessage(MSGID_SASLGSSAPI_NO_AUTHZ_ID,
                     "The GSSAPI authentication process appears to have " +
                     "completed but no authorization ID is available for " +
-                    "mapping to a directory user.");
+                    "mapping to a directory user");
     registerMessage(MSGID_SASLGSSAPI_CANNOT_PERFORM_INTERNAL_SEARCH,
                     "An error occurred while attempting to perform an " +
                     "internal search to map the GSSAPI authorization ID %s " +
                     "to a Directory Server user (result code %d, error " +
-                    "message \"%s\").");
+                    "message \"%s\")");
     registerMessage(MSGID_SASLGSSAPI_MULTIPLE_MATCHING_ENTRIES,
                     "The GSSAPI authorization ID %s appears to have multiple " +
-                    "matches in the Directory Server.");
+                    "matches in the Directory Server");
     registerMessage(MSGID_SASLGSSAPI_CANNOT_MAP_AUTHZID,
                     "The GSSAPI authorization ID %s could not be mapped to " +
-                    "any user in the Directory Server.");
+                    "any user in the Directory Server");
     registerMessage(MSGID_SASLGSSAPI_UPDATED_KDC,
                     "Attribute " + ATTR_GSSAPI_KDC +
                     " in configuration entry %s has been updated.  The value " +
                     "\"%s\" will now be used as the address of the KDC for " +
-                    "GSSAPI authentication.");
+                    "GSSAPI authentication");
     registerMessage(MSGID_SASLGSSAPI_UNSET_KDC,
                     "Attribute " + ATTR_GSSAPI_KDC +
                     " in configuration entry %s has been un-set as a system " +
                     "property.  Any further GSSAPI authentication attempts " +
                     "will rely on the Kerberos configuration in the " +
                     "underlying operating system to determine the KDC " +
-                    "address.");
+                    "address");
     registerMessage(MSGID_SASLGSSAPI_UPDATED_REALM,
                     "Attribute " + ATTR_GSSAPI_REALM +
                     " in configuration entry %s has been updated.  The value " +
                     "\"%s\" will now be used as the default realm for GSSAPI " +
-                    "authentication.");
+                    "authentication");
     registerMessage(MSGID_SASLGSSAPI_UNSET_REALM,
                     "Attribute " + ATTR_GSSAPI_REALM +
                     " in configuration entry %s has been un-set as a system " +
                     "property.  Any further GSSAPI authentication attempts " +
                     "will rely on the Kerberos configuration in the " +
                     "underlying operating system to determine the default " +
-                    "realm.");
+                    "realm");
     registerMessage(MSGID_SASLGSSAPI_CANNOT_CREATE_LOGIN_CONTEXT,
                     "An error occurred while attempting to create the JAAS " +
-                    "login context for GSSAPI authentication:  %s.");
+                    "login context for GSSAPI authentication:  %s");
     registerMessage(MSGID_SASLGSSAPI_CANNOT_AUTHENTICATE_SERVER,
                     "An error occurred while attempting to perform " +
                     "server-side Kerberos authentication to support a GSSAPI " +
-                    "bind operation:  %s.");
+                    "bind operation:  %s");
     registerMessage(MSGID_SASLGSSAPI_DESCRIPTION_KEYTAB_FILE,
                     "Specifies the path to the keytab file containing the " +
                     "secret key for the Kerberos principal to use when " +
@@ -6608,36 +6608,36 @@
                     "will be used.  Changes to this configuration attribute " +
                     "will not take effect until the GSSAPI SASL mechanism " +
                     "handler is disabled and re-enabled or the Directory " +
-                    "Server is restarted.");
+                    "Server is restarted");
     registerMessage(MSGID_SASLGSSAPI_CANNOT_GET_KEYTAB_FILE,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " + ATTR_GSSAPI_KEYTAB_FILE +
-                    " attribute in configuration entry %s:  %s.");
+                    " attribute in configuration entry %s:  %s");
     registerMessage(MSGID_SASLGSSAPI_CANNOT_CREATE_JAAS_CONFIG,
                     "An error occurred while attempting to write a " +
                     "temporary JAAS configuration file for use during " +
-                    "GSSAPI processing:  %s.");
+                    "GSSAPI processing:  %s");
     registerMessage(MSGID_SASLGSSAPI_DIFFERENT_AUTHID_AND_AUTHZID,
                     "The authentication ID %s was not equal to the " +
                     "authorization ID %s.  This is not supported for " +
-                    "GSSAPI authentication.");
+                    "GSSAPI authentication");
 
 
     registerMessage(MSGID_EXTOP_WHOAMI_NO_CLIENT_CONNECTION,
                     "No client connection structure is available for use in " +
-                    "determining the requested authorization ID.");
+                    "determining the requested authorization ID");
 
 
     registerMessage(MSGID_SOFTREFCACHE_DESCRIPTION_LOCK_TIMEOUT,
                     "Specifies the maximum length of time in milliseconds " +
                     "that the entry cache should block while attempting " +
                     "to acquire a lock for an entry.  Changes to this " +
-                    "configuration attribute will take effect immediately.");
+                    "configuration attribute will take effect immediately");
     registerMessage(MSGID_SOFTREFCACHE_CANNOT_DETERMINE_LOCK_TIMEOUT,
                     "An error occurred while attempting to determine the " +
                     "value of the " + ATTR_SOFTREFCACHE_LOCK_TIMEOUT +
                     " attribute in configuration entry %s:  %s.  The default " +
-                    "of %d will be used.");
+                    "of %d will be used");
     registerMessage(MSGID_SOFTREFCACHE_DESCRIPTION_INCLUDE_FILTERS,
                     "Specifies a set of search filters that may be used to " +
                     "indicate which entries should be included in the entry " +
@@ -6646,24 +6646,24 @@
                     "are provided, then any entry will be accepted.  Changes " +
                     "to this configuration attribute will take effect " +
                     "immediately, but will not impact existing entries that " +
-                    "are already held in the cache.");
+                    "are already held in the cache");
     registerMessage(MSGID_SOFTREFCACHE_CANNOT_DECODE_INCLUDE_FILTER,
                     "An error occurred while attempting to decode the value " +
                     "\"%s\" from attribute " +
                     ATTR_SOFTREFCACHE_INCLUDE_FILTER + " of entry %s:  %s.  " +
                     "This filter will not be used when determining whether " +
-                    "to store an entry in the cache.");
+                    "to store an entry in the cache");
     registerMessage(MSGID_SOFTREFCACHE_CANNOT_DECODE_ANY_INCLUDE_FILTERS,
                     "An error occurred while attempting to decode any of the " +
                     "values from attribute " +
                     ATTR_SOFTREFCACHE_INCLUDE_FILTER + " of entry %s.  All " +
                     "entries will be considered eligible for inclusion in " +
-                    "the cache.");
+                    "the cache");
     registerMessage(MSGID_SOFTREFCACHE_CANNOT_DETERMINE_INCLUDE_FILTERS,
                     "An error occurred while attempting to determine the " +
                     "value of the " + ATTR_SOFTREFCACHE_INCLUDE_FILTER +
                     " attribute in configuration entry %s:  %s.  All entries " +
-                    "will be considered eligible for inclusion in the cache.");
+                    "will be considered eligible for inclusion in the cache");
     registerMessage(MSGID_SOFTREFCACHE_DESCRIPTION_EXCLUDE_FILTERS,
                     "Specifies a set of search filters that may be used to " +
                     "indicate which entries should be excluded from the " +
@@ -6672,63 +6672,63 @@
                     "provided, then any entry will be accepted.  Changes to " +
                     "this configuration attribute will take effect " +
                     "immediately, but will not impact existing entries that " +
-                    "are already held in the cache.");
+                    "are already held in the cache");
     registerMessage(MSGID_SOFTREFCACHE_CANNOT_DECODE_EXCLUDE_FILTER,
                     "An error occurred while attempting to decode the value " +
                     "\"%s\" from attribute " +
                     ATTR_SOFTREFCACHE_EXCLUDE_FILTER + " of entry %s:  %s.  " +
                     "This filter will not be used when determining whether " +
-                    "to store an entry in the cache.");
+                    "to store an entry in the cache");
     registerMessage(MSGID_SOFTREFCACHE_CANNOT_DECODE_ANY_EXCLUDE_FILTERS,
                     "An error occurred while attempting to decode any of the " +
                     "values from attribute " +
                     ATTR_SOFTREFCACHE_EXCLUDE_FILTER + " of entry %s.  All " +
                     "entries will be considered eligible for inclusion in " +
-                    "the cache.");
+                    "the cache");
     registerMessage(MSGID_SOFTREFCACHE_CANNOT_DETERMINE_EXCLUDE_FILTERS,
                     "An error occurred while attempting to determine the " +
                     "value of the " + ATTR_SOFTREFCACHE_EXCLUDE_FILTER +
                     " attribute in configuration entry %s:  %s.  All entries " +
-                    "will be considered eligible for inclusion in the cache.");
+                    "will be considered eligible for inclusion in the cache");
     registerMessage(MSGID_SOFTREFCACHE_INVALID_LOCK_TIMEOUT,
                     "The " + ATTR_SOFTREFCACHE_LOCK_TIMEOUT + " attribute of " +
                     "entry %s, which specifies the maximum length of time in " +
                     "milliseconds that the cache should block while " +
                     "attempting to obtain a lock on an entry, has an invalid " +
                     "value:  %s.  Its value must be a positive integer, or " +
-                    "zero to indicate that it should never block.");
+                    "zero to indicate that it should never block");
     registerMessage(MSGID_SOFTREFCACHE_INVALID_INCLUDE_FILTER,
                     "The " + ATTR_SOFTREFCACHE_INCLUDE_FILTER + " attribute " +
                     "of entry %s, which specifies a set of search filters " +
                     "that may be used to control which entries are included " +
-                    "in the cache, has an invalid value of \"%s\":  %s.");
+                    "in the cache, has an invalid value of \"%s\":  %s");
     registerMessage(MSGID_SOFTREFCACHE_INVALID_INCLUDE_FILTERS,
                     "The " + ATTR_SOFTREFCACHE_INCLUDE_FILTER + " attribute " +
                     "of entry %s, which specifies a set of search filters " +
                     "that may be used to control which entries are included " +
-                    "in the cache, has an invalid value:  %s.");
+                    "in the cache, has an invalid value:  %s");
     registerMessage(MSGID_SOFTREFCACHE_INVALID_EXCLUDE_FILTER,
                     "The " + ATTR_SOFTREFCACHE_EXCLUDE_FILTER + " attribute " +
                     "of entry %s, which specifies a set of search filters " +
                     "that may be used to control which entries are excluded " +
-                    "from the cache, has an invalid value of \"%s\":  %s.");
+                    "from the cache, has an invalid value of \"%s\":  %s");
     registerMessage(MSGID_SOFTREFCACHE_INVALID_EXCLUDE_FILTERS,
                     "The " + ATTR_SOFTREFCACHE_EXCLUDE_FILTER + " attribute " +
                     "of entry %s, which specifies a set of search filters " +
                     "that may be used to control which entries are excluded " +
-                    "from the cache, has an invalid value:  %s.");
+                    "from the cache, has an invalid value:  %s");
     registerMessage(MSGID_SOFTREFCACHE_UPDATED_LOCK_TIMEOUT,
                     "The lock timeout that will be used to determine the " +
                     "length of time that the cache should block while " +
                     "attempting to acquire a lock for an entry has been " +
-                    "set to %d milliseconds.");
+                    "set to %d milliseconds");
     registerMessage(MSGID_SOFTREFCACHE_UPDATED_INCLUDE_FILTERS,
                     "The set of search filters that will control which " +
-                    "entries may be included in the cache has been updated.");
+                    "entries may be included in the cache has been updated");
     registerMessage(MSGID_SOFTREFCACHE_UPDATED_EXCLUDE_FILTERS,
                     "The set of search filters that will control which " +
                     "entries should be be excluded from the cache has been " +
-                    "updated.");
+                    "updated");
 
 
     registerMessage(MSGID_EXACTMAP_DESCRIPTION_MATCH_ATTR,
@@ -6739,61 +6739,61 @@
                     "attribute type defined in the Directory Server schema.  " +
                     "If multiple attribute type names or OIDs are provided, " +
                     "then at least one of those attributes must contain the " +
-                    "provided ID string value in exactly one entry.");
+                    "provided ID string value in exactly one entry");
     registerMessage(MSGID_EXACTMAP_NO_MATCH_ATTR,
                     "Configuration entry %s does not have any values for " +
                     "attribute " + ATTR_MATCH_ATTRIBUTE + ", which is used " +
                     "to specify which attribute(s) may be used to map a " +
-                    "given ID string to a user entry.");
+                    "given ID string to a user entry");
     registerMessage(MSGID_EXACTMAP_UNKNOWN_ATTR,
                     "Configuration entry %s contains value %s for attribute " +
                     ATTR_MATCH_ATTRIBUTE + " but that is not a valid name or " +
                     "OID for any attribute type defined in the Directory " +
-                    "Server schema.");
+                    "Server schema");
     registerMessage(MSGID_EXACTMAP_CANNOT_DETERMINE_MATCH_ATTR,
                     "An error occurred while attempting to process the " +
                     "value(s) of attribute " + ATTR_MATCH_ATTRIBUTE +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_EXACTMAP_DESCRIPTION_SEARCH_BASE,
                     "Specifies the base DN(s) that should be used when " +
                     "performing searches to map the provided ID string to a " +
                     "user entry.  If no values are provided, then the " +
-                    "root DSE will be used as the search base.");
+                    "root DSE will be used as the search base");
     registerMessage(MSGID_EXACTMAP_CANNOT_DETERMINE_MATCH_BASE,
                     "An error occurred while attempting to process the " +
                     "value(s) of attribute " + ATTR_MATCH_BASE +
-                    " in configuration entry %s:  %s.");
+                    " in configuration entry %s:  %s");
     registerMessage(MSGID_EXACTMAP_UPDATED_MATCH_ATTRS,
                     "The set of attributes to use when matching ID strings " +
                     "to user entries contained in attribute " +
                     ATTR_MATCH_ATTRIBUTE + " of configuration entry %s has " +
-                    "been updated.");
+                    "been updated");
     registerMessage(MSGID_EXACTMAP_UPDATED_MATCH_BASES,
                     "The set of search base DNs to use when matching ID " +
                     "strings to user entries contained in attribute " +
                     ATTR_MATCH_BASE + " of configuration entry %s has been " +
-                    "updated.");
+                    "updated");
     registerMessage(MSGID_EXACTMAP_MULTIPLE_MATCHING_ENTRIES,
-                    "ID string %s mapped to multiple users.");
+                    "ID string %s mapped to multiple users");
     registerMessage(MSGID_EXACTMAP_INEFFICIENT_SEARCH,
                     "The internal search based on ID string %s could not be " +
                     "processed efficiently:  %s.  Check the server " +
                     "configuration to ensure that all associated backends " +
-                    "are properly configured for these types of searches.");
+                    "are properly configured for these types of searches");
     registerMessage(MSGID_EXACTMAP_SEARCH_FAILED,
                     "An internal failure occurred while attempting to " +
-                    "resolve ID string %s to a user entry:  %s.");
+                    "resolve ID string %s to a user entry:  %s");
 
 
     registerMessage(MSGID_EXTOP_CANCEL_NO_REQUEST_VALUE,
                     "Unable to process the cancel request because the " +
-                    "extended operation did not include a request value.");
+                    "extended operation did not include a request value");
     registerMessage(MSGID_EXTOP_CANCEL_CANNOT_DECODE_REQUEST_VALUE,
                     "An error occurred while attempting to decode the value " +
-                    "of the cancel extended request:  %s.");
+                    "of the cancel extended request:  %s");
     registerMessage(MSGID_EXTOP_CANCEL_REASON,
                     "Processing on this operation was terminated as a " +
-                    "result of receiving a cancel request (message ID %d).");
+                    "result of receiving a cancel request (message ID %d)");
 
 
     registerMessage(MSGID_PWLENGTHVALIDATOR_DESCRIPTION_MIN_LENGTH,
@@ -6801,50 +6801,50 @@
                     "password will be allowed to have.  A value of zero " +
                     "indicates that there is no minimum length.  Changes to " +
                     "this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_PWLENGTHVALIDATOR_CANNOT_DETERMINE_MIN_LENGTH,
                     "An error occurred while attempting to determine the " +
                     "minimum allowed password length from the " +
-                    ATTR_PASSWORD_MIN_LENGTH + " attribute:  %s.");
+                    ATTR_PASSWORD_MIN_LENGTH + " attribute:  %s");
     registerMessage(MSGID_PWLENGTHVALIDATOR_DESCRIPTION_MAX_LENGTH,
                     "Specifies the maximum number of characters that a " +
                     "password will be allowed to have.  A value of zero " +
                     "indicates that there is no maximum length.  Changes to " +
                     "this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_PWLENGTHVALIDATOR_CANNOT_DETERMINE_MAX_LENGTH,
                     "An error occurred while attempting to determine the " +
                     "maximum allowed password length from the " +
-                    ATTR_PASSWORD_MAX_LENGTH + " attribute:  %s.");
+                    ATTR_PASSWORD_MAX_LENGTH + " attribute:  %s");
     registerMessage(MSGID_PWLENGTHVALIDATOR_MIN_GREATER_THAN_MAX,
                     "The configured minimum password length of %d characters " +
                     "is greater than the configured maximum password length " +
-                    "of %d.");
+                    "of %d");
     registerMessage(MSGID_PWLENGTHVALIDATOR_TOO_SHORT,
                     "The provided password is shorter than the minimum " +
-                    "required length of %d characters.");
+                    "required length of %d characters");
     registerMessage(MSGID_PWLENGTHVALIDATOR_TOO_LONG,
                     "The provided password is longer than the maximum " +
-                    "allowed length of %d characters.");
+                    "allowed length of %d characters");
     registerMessage(MSGID_PWLENGTHVALIDATOR_UPDATED_MIN_LENGTH,
-                    "The minimum password length has been updated to %d.");
+                    "The minimum password length has been updated to %d");
     registerMessage(MSGID_PWLENGTHVALIDATOR_UPDATED_MAX_LENGTH,
-                    "The maximum password length has been updated to %d.");
+                    "The maximum password length has been updated to %d");
     registerMessage(MSGID_PWDIFFERENCEVALIDATOR_DESCRIPTION_MIN_DIFFERENCE,
                     "Specifies the minimum difference that a " +
                     "password will be allowed to have.  A value of zero " +
                     "indicates that there is no minimum difference.  Changes " +
                     "to this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_PWDIFFERENCEVALIDATOR_CANNOT_DETERMINE_MIN_DIFFERENCE,
                     "An error occurred while attempting to determine the " +
                     "minimum allowed password difference from the " +
-                    ATTR_PASSWORD_MIN_DIFFERENCE + " attribute:  %s.");
+                    ATTR_PASSWORD_MIN_DIFFERENCE + " attribute:  %s");
     registerMessage(MSGID_PWDIFFERENCEVALIDATOR_TOO_SMALL,
                     "The provided password differs less than the minimum " +
-                    "required difference of %d characters.");
+                    "required difference of %d characters");
     registerMessage(MSGID_PWDIFFERENCEVALIDATOR_UPDATED_MIN_DIFFERENCE,
-                    "The minimum password difference has been updated to %d.");
+                    "The minimum password difference has been updated to %d");
 
 
     registerMessage(MSGID_RANDOMPWGEN_DESCRIPTION_CHARSET,
@@ -6854,21 +6854,21 @@
                     "characters) followed immediately by a colon and the set " +
                     "of characters that should be included in that " +
                     "character set.  Changes to this configuration attribute " +
-                    "will take effect immediately.");
+                    "will take effect immediately");
     registerMessage(MSGID_RANDOMPWGEN_NO_CHARSETS,
                     "Configuration entry \"%s\" does not contain attribute " +
                     ATTR_PASSWORD_CHARSET + " which specifies the sets of " +
                     "characters that should be used when generating the " +
-                    "password.  This is a required attribute.");
+                    "password.  This is a required attribute");
     registerMessage(MSGID_RANDOMPWGEN_CHARSET_NAME_CONFLICT,
                     "Configuration entry \"%s\" contains multiple " +
-                    "definitions for the %s character set.");
+                    "definitions for the %s character set");
     registerMessage(MSGID_RANDOMPWGEN_CANNOT_DETERMINE_CHARSETS,
                     "An error occurred while attempting to decode the " +
                     "value(s) of the configuration attribute " +
                     ATTR_PASSWORD_CHARSET + ", which is used to hold the " +
                     "character set(s) for use in generating the password:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_RANDOMPWGEN_DESCRIPTION_PWFORMAT,
                     "Specifies the format that should be used for passwords " +
                     "constructed by this password generator.  The value " +
@@ -6876,40 +6876,40 @@
                     "each element is the name of a character set followed " +
                     "by a colon and the number of characters to choose at " +
                     "random from that character set.  Changes to this " +
-                    "configuration attribute will take effect immediately.");
+                    "configuration attribute will take effect immediately");
     registerMessage(MSGID_RANDOMPWGEN_NO_PWFORMAT,
                     "Configuration entry \"%s\" does not contain attribute " +
                     ATTR_PASSWORD_FORMAT + " which specifies the format to " +
                     "use for the generated password.  This is a required " +
-                    "attribute.");
+                    "attribute");
     registerMessage(MSGID_RANDOMPWGEN_UNKNOWN_CHARSET,
                     "The password format string \"%s\" references an " +
-                    "undefined character set \"%s\".");
+                    "undefined character set \"%s\"");
     registerMessage(MSGID_RANDOMPWGEN_INVALID_PWFORMAT,
                     "The password format string \"%s\" contains an invalid " +
                     "syntax.  This value should be a comma-delimited " +
                     "sequence of elements, where each element is the name of " +
                     "a character set followed by a colon and the number of " +
-                    "characters to choose at random from that character set.");
+                    "characters to choose at random from that character set");
     registerMessage(MSGID_RANDOMPWGEN_CANNOT_DETERMINE_PWFORMAT,
                     "An error occurred while attempting to decode the " +
                     "value for configuration attribute " +
                     ATTR_PASSWORD_FORMAT + ", which is used to specify the " +
-                    "format for the generated passwords:  %s.");
+                    "format for the generated passwords:  %s");
 
 
     registerMessage(
          MSGID_ERRORLOG_ACCTNOTHANDLER_DESCRIPTION_NOTIFICATION_TYPES,
          "Specifies the status notification types for which log messages " +
          "should be generated.  It is a multivalued attribute, and changes " +
-         "will take effect immediately.");
+         "will take effect immediately");
     registerMessage(MSGID_ERRORLOG_ACCTNOTHANDLER_INVALID_TYPE,
                     "Configuration entry %s contains unrecognized account " +
-                    "status notification type %s.");
+                    "status notification type %s");
     registerMessage(MSGID_ERRORLOG_ACCTNOTHANDLER_CANNOT_GET_NOTIFICATION_TYPES,
                     "An error occurred while attempting to determine " +
                     "the account status notification types from " +
-                    "configuration entry %s:  %s.");
+                    "configuration entry %s:  %s");
     registerMessage(MSGID_ERRORLOG_ACCTNOTHANDLER_NOTIFICATION,
                     "Account-Status-Notification type='%s' userdn='%s' " +
                     "id=%d msg='%s'");
@@ -6918,79 +6918,79 @@
     registerMessage(MSGID_STATICMEMBERS_NO_SUCH_ENTRY,
                     "Unable to examine entry %s as a potential member of " +
                     "static group %s because that entry does not exist in " +
-                    "the Directory Server.");
+                    "the Directory Server");
     registerMessage(MSGID_STATICMEMBERS_CANNOT_GET_ENTRY,
                     "An error occurred while attempting to retrieve entry %s " +
-                    "as a potential member of static group %s:  %s.");
+                    "as a potential member of static group %s:  %s");
 
 
     registerMessage(MSGID_STATICGROUP_INVALID_OC_COMBINATION,
                     "Entry %s cannot be parsed as a valid static group " +
                     "because static groups are not allowed to have both the " +
-                    "%s and %s object classes.");
+                    "%s and %s object classes");
     registerMessage(MSGID_STATICGROUP_NO_VALID_OC,
                     "Entry %s cannot be parsed as a valid static group " +
                     "because it does not contain exactly one of the %s or " +
-                    "the %s object classes.");
+                    "the %s object classes");
     registerMessage(MSGID_STATICGROUP_CANNOT_DECODE_MEMBER_VALUE_AS_DN,
                     "Value %s for attribute %s in entry %s cannot be parsed " +
                     "as a valid DN:  %s.  It will be excluded from the set " +
-                    "of group members.");
+                    "of group members");
     registerMessage(MSGID_STATICGROUP_ADD_MEMBER_ALREADY_EXISTS,
                     "Cannot add user %s as a new member of static group %s " +
                     "because that user is already in the member list for the " +
-                    "group.");
+                    "group");
     registerMessage(MSGID_STATICGROUP_ADD_MEMBER_UPDATE_FAILED,
                     "Cannot add user %s as a new member of static group %s " +
                     "because an error occurred while attempting to perform " +
-                    "an internal modification to update the group:  %s.");
+                    "an internal modification to update the group:  %s");
     registerMessage(MSGID_STATICGROUP_REMOVE_MEMBER_NO_SUCH_MEMBER,
                     "Cannot remove user %s as a member of static group %s " +
                     "because that user is not included in the member list " +
-                    "for the group.");
+                    "for the group");
     registerMessage(MSGID_STATICGROUP_REMOVE_MEMBER_UPDATE_FAILED,
                     "Cannot remove user %s as a member of static group %s " +
                     "because an error occurred while attempting to perform " +
-                    "an internal modification to update the group:  %s.");
+                    "an internal modification to update the group:  %s");
 
 
     registerMessage(MSGID_SDTUACM_DESCRIPTION_SUBJECT_ATTR,
                     "Specifies the name of the attribute type in user " +
                     "entries that contains the subjects of the certificates " +
                     "held by that user.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_SDTUACM_NO_SUBJECT_ATTR,
                     "Configuration entry %s does not contain required " +
                     "attribute %s, which is used to specify which attribute " +
                     "should contain the subjects of the certificates held " +
-                    "by users.");
+                    "by users");
     registerMessage(MSGID_SDTUACM_NO_SUCH_ATTR,
                     "Configuration entry %s indicates that certificate " +
                     "subjects should be held in attribute %s, but this " +
-                    "attribute is not defined in the server schema.");
+                    "attribute is not defined in the server schema");
     registerMessage(MSGID_SDTUACM_CANNOT_GET_SUBJECT_ATTR,
                     "An error occurred while attempting to determine which " +
                     "attribute type should be used to hold certificate " +
-                    "subjects from configuration entry %s:  %s.");
+                    "subjects from configuration entry %s:  %s");
     registerMessage(MSGID_SDTUACM_DESCRIPTION_BASE_DN,
                     "Specifies the base DNs below which the searches to " +
                     "find matching user entries will be performed.  If no " +
                     "base DN(s) are provided, then the server will search " +
                     "below all public naming contexts.  Changes to this " +
-                    "configuration attribute will take effect immediately.");
+                    "configuration attribute will take effect immediately");
     registerMessage(MSGID_SDTUACM_CANNOT_GET_BASE_DN,
                     "An error occurred while attempting to determine the " +
-                    "search base DN(s) from configuration entry %s:  %s.");
+                    "search base DN(s) from configuration entry %s:  %s");
     registerMessage(MSGID_SDTUACM_NO_PEER_CERTIFICATE,
                     "Could not map the provided certificate chain to a user " +
-                    "entry because no peer certificate was available.");
+                    "entry because no peer certificate was available");
     registerMessage(MSGID_SDTUACM_PEER_CERT_NOT_X509,
                     "Could not map the provided certificate chain to a user " +
                     "because the peer certificate was not an X.509 " +
-                    "certificate (peer certificate format was %s).");
+                    "certificate (peer certificate format was %s)");
     registerMessage(MSGID_SDTUACM_MULTIPLE_MATCHING_ENTRIES,
                     "The certificate with subject %s could not be mapped to " +
-                    "exactly one user.  It maps to both %s and %s.");
+                    "exactly one user.  It maps to both %s and %s");
 
 
     registerMessage(MSGID_SATUACM_DESCRIPTION_ATTR_MAP,
@@ -6999,212 +6999,212 @@
                     "in certificate subjects and attributes in user " +
                     "entries.  Values should be in the form " +
                     "'certattr:userattr'.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_SATUACM_NO_MAP_ATTR,
                     "Configuration entry %s does not contain required " +
                     "attribute %s, which is used to specify the mappings " +
                     "between attributes in certificate subjects and " +
-                    "attributes in user entries.");
+                    "attributes in user entries");
     registerMessage(MSGID_SATUACM_INVALID_MAP_FORMAT,
                     "Configuration entry %s has value '%s' which violates " +
                     "the format required for attribute mappings.  The " +
-                    "expected format is 'certattr:userattr'.");
+                    "expected format is 'certattr:userattr'");
     registerMessage(MSGID_SATUACM_DUPLICATE_CERT_ATTR,
                     "Configuration entry %s contains multiple mappings " +
-                    "for certificate attribute %s.");
+                    "for certificate attribute %s");
     registerMessage(MSGID_SATUACM_NO_SUCH_ATTR,
                     "Mapping %s in configuration entry %s references " +
-                    "attribute %s which is not defined in the server schema.");
+                    "attribute %s which is not defined in the server schema");
     registerMessage(MSGID_SATUACM_DUPLICATE_USER_ATTR,
                     "Configuration entry %s contains multiple mappings " +
-                    "for user attribute %s.");
+                    "for user attribute %s");
     registerMessage(MSGID_SATUACM_CANNOT_GET_ATTR_MAP,
                     "An error occurred while attempting to determine the set " +
-                    "of attribute mappings from configuration entry %s:  %s.");
+                    "of attribute mappings from configuration entry %s:  %s");
     registerMessage(MSGID_SATUACM_DESCRIPTION_BASE_DN,
                     "Specifies the base DNs below which the searches to " +
                     "find matching user entries will be performed.  If no " +
                     "base DN(s) are provided, then the server will search " +
                     "below all public naming contexts.  Changes to this " +
-                    "configuration attribute will take effect immediately.");
+                    "configuration attribute will take effect immediately");
     registerMessage(MSGID_SATUACM_CANNOT_GET_BASE_DN,
                     "An error occurred while attempting to determine the " +
-                    "search base DN(s) from configuration entry %s:  %s.");
+                    "search base DN(s) from configuration entry %s:  %s");
     registerMessage(MSGID_SATUACM_NO_PEER_CERTIFICATE,
                     "Could not map the provided certificate chain to a user " +
-                    "entry because no peer certificate was available.");
+                    "entry because no peer certificate was available");
     registerMessage(MSGID_SATUACM_PEER_CERT_NOT_X509,
                     "Could not map the provided certificate chain to a user " +
                     "because the peer certificate was not an X.509 " +
-                    "certificate (peer certificate format was %s).");
+                    "certificate (peer certificate format was %s)");
     registerMessage(MSGID_SATUACM_CANNOT_DECODE_SUBJECT_AS_DN,
                     "Unable to decode peer certificate subject %s as a DN:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_SATUACM_NO_MAPPABLE_ATTRIBUTES,
                     "Peer certificate subject %s does not contain any " +
-                    "attributes for which a mapping has been established.");
+                    "attributes for which a mapping has been established");
     registerMessage(MSGID_SATUACM_MULTIPLE_MATCHING_ENTRIES,
                     "The certificate with subject %s could not be mapped to " +
-                    "exactly one user.  It maps to both %s and %s.");
+                    "exactly one user.  It maps to both %s and %s");
 
 
     registerMessage(MSGID_FCM_DESCRIPTION_FINGERPRINT_ATTR,
                     "Specifies the name of the attribute type in user " +
                     "entries that contains the fingerprints of the " +
                     "certificates held by that user.  Changes to this " +
-                    "configuration attribute will take effect immediately.");
+                    "configuration attribute will take effect immediately");
     registerMessage(MSGID_FCM_NO_FINGERPRINT_ATTR,
                     "Configuration entry %s does not contain required " +
                     "attribute %s, which is used to specify which attribute " +
                     "should contain the fingerprints of the certificates " +
-                    "held by users.");
+                    "held by users");
     registerMessage(MSGID_FCM_NO_SUCH_ATTR,
                     "Configuration entry %s indicates that certificate " +
                     "fingerprints should be held in attribute %s, but this " +
-                    "attribute is not defined in the server schema.");
+                    "attribute is not defined in the server schema");
     registerMessage(MSGID_FCM_CANNOT_GET_FINGERPRINT_ATTR,
                     "An error occurred while attempting to determine which " +
                     "attribute type should be used to hold certificate " +
-                    "fingerprints from configuration entry %s:  %s.");
+                    "fingerprints from configuration entry %s:  %s");
     registerMessage(MSGID_FCM_DESCRIPTION_FINGERPRINT_ALGORITHM,
                     "Specifies the name of the digest algorithm used for " +
                     "the certificate fingerprints.  The value should be " +
                     "either 'MD5' or 'SHA1'.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_FCM_NO_FINGERPRINT_ALGORITHM,
                     "Configuration entry %s does not contain required " +
                     "attribute %s, which is used to specify which digest " +
                     "algorithm should be used to compute certificate " +
-                    "fingerprints.");
+                    "fingerprints");
     registerMessage(MSGID_FCM_CANNOT_GET_FINGERPRINT_ALGORITHM,
                     "An error occurred while attempting to determine the " +
-                    "digest algorithm from configuration entry %s:  %s.");
+                    "digest algorithm from configuration entry %s:  %s");
     registerMessage(MSGID_FCM_DESCRIPTION_BASE_DN,
                     "Specifies the base DNs below which the searches to " +
                     "find matching user entries will be performed.  If no " +
                     "base DN(s) are provided, then the server will search " +
                     "below all public naming contexts.  Changes to this " +
-                    "configuration attribute will take effect immediately.");
+                    "configuration attribute will take effect immediately");
     registerMessage(MSGID_FCM_CANNOT_GET_BASE_DN,
                     "An error occurred while attempting to determine the " +
-                    "search base DN(s) from configuration entry %s:  %s.");
+                    "search base DN(s) from configuration entry %s:  %s");
     registerMessage(MSGID_FCM_NO_PEER_CERTIFICATE,
                     "Could not map the provided certificate chain to a user " +
-                    "entry because no peer certificate was available.");
+                    "entry because no peer certificate was available");
     registerMessage(MSGID_FCM_PEER_CERT_NOT_X509,
                     "Could not map the provided certificate chain to a user " +
                     "because the peer certificate was not an X.509 " +
-                    "certificate (peer certificate format was %s).");
+                    "certificate (peer certificate format was %s)");
     registerMessage(MSGID_FCM_CANNOT_CALCULATE_FINGERPRINT,
                     "An error occurred while attempting to calculate the " +
                     "fingerprint for the peer certificate with subject %s:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_FCM_MULTIPLE_MATCHING_ENTRIES,
                     "The certificate with fingerprint %s could not be mapped " +
-                    "to exactly one user.  It maps to both %s and %s.");
+                    "to exactly one user.  It maps to both %s and %s");
 
 
     registerMessage(MSGID_DYNAMICGROUP_CANNOT_DECODE_MEMBERURL,
                     "Unable to decode value \"%s\" in entry \"%s\" as an " +
-                    "LDAP URL:  %s.");
+                    "LDAP URL:  %s");
     registerMessage(MSGID_DYNAMICGROUP_NESTING_NOT_SUPPORTED,
-                    "Dynamic groups do not support nested groups.");
+                    "Dynamic groups do not support nested groups");
     registerMessage(MSGID_DYNAMICGROUP_ALTERING_MEMBERS_NOT_SUPPORTED,
                     "Dynamic groups do not support explicitly altering their " +
-                    "membership.");
+                    "membership");
     registerMessage(MSGID_DYNAMICGROUP_NONEXISTENT_BASE_DN,
                     "Base DN %s specified in dynamic group %s does not exist " +
-                    "in the server.");
+                    "in the server");
     registerMessage(MSGID_DYNAMICGROUP_INTERNAL_SEARCH_FAILED,
                     "An error occurred while attempting perform an internal " +
                     "search with base DN %s and filter %s to resolve the " +
                     "member list for dynamic group %s:  result code %s, " +
-                    "error message %s.");
+                    "error message %s");
     registerMessage(MSGID_DYNAMICGROUP_CANNOT_RETURN_ENTRY,
                     "The server encountered a timeout while attempting to " +
-                    "add user %s to the member list for dynamic group %s.");
+                    "add user %s to the member list for dynamic group %s");
 
 
     registerMessage(MSGID_REPEATEDCHARS_VALIDATOR_TOO_MANY_CONSECUTIVE,
                     "The provided password contained too many instances " +
                     "of the same character appearing consecutively.  The " +
                     "maximum number of times the same character may appear " +
-                    "consecutively in a password is %d.");
+                    "consecutively in a password is %d");
 
 
     registerMessage(MSGID_UNIQUECHARS_VALIDATOR_NOT_ENOUGH_UNIQUE_CHARS,
                     "The provided password does not contain enough unique " +
                     "characters.  The minimum number of unique characters " +
-                    "that may appear in a user password is %d.");
+                    "that may appear in a user password is %d");
 
 
     registerMessage(MSGID_SUBSCHEMASUBENTRY_VATTR_NOT_SEARCHABLE,
                     "The %s attribute is not searchable and should not be " +
-                    "included in otherwise unindexed search filters.");
+                    "included in otherwise unindexed search filters");
 
 
     registerMessage(MSGID_DICTIONARY_VALIDATOR_PASSWORD_IN_DICTIONARY,
                     "The provided password was found in the server's " +
-                    "dictionary.");
+                    "dictionary");
     registerMessage(MSGID_DICTIONARY_VALIDATOR_NO_SUCH_FILE,
-                    "The specified dictionary file %s does not exist.");
+                    "The specified dictionary file %s does not exist");
     registerMessage(MSGID_DICTIONARY_VALIDATOR_CANNOT_READ_FILE,
                     "An error occurred while attempting to load the " +
-                    "dictionary from file %s:  %s.");
+                    "dictionary from file %s:  %s");
 
 
     registerMessage(MSGID_ATTRVALUE_VALIDATOR_PASSWORD_IN_ENTRY,
                     "The provided password was found in another attribute " +
-                    "in the user entry.");
+                    "in the user entry");
 
 
     registerMessage(MSGID_CHARSET_VALIDATOR_ILLEGAL_CHARACTER,
                     "The provided password contained character '%s' which is " +
-                    "not allowed for use in passwords.");
+                    "not allowed for use in passwords");
     registerMessage(MSGID_CHARSET_VALIDATOR_TOO_FEW_CHARS_FROM_SET,
                     "The provided password did not contain enough " +
                     "characters from the character set '%s'.  The minimum " +
                     "number of characters from that set that must be present " +
-                    "in user passwords is %d.");
+                    "in user passwords is %d");
     registerMessage(MSGID_CHARSET_VALIDATOR_NO_COLON,
                     "The provided character set definition '%s' is invalid " +
                     "because it does not contain a colon to separate the " +
-                    "minimum count from the character set.");
+                    "minimum count from the character set");
     registerMessage(MSGID_CHARSET_VALIDATOR_NO_CHARS,
                     "The provided character set definition '%s' is invalid " +
-                    "because the provided character set is empty.");
+                    "because the provided character set is empty");
     registerMessage(MSGID_CHARSET_VALIDATOR_INVALID_COUNT,
                     "The provided character set definition '%s' is invalid " +
                     "because the value before the colon must be an integer " +
-                    "greater than zero.");
+                    "greater than zero");
     registerMessage(MSGID_CHARSET_VALIDATOR_DUPLICATE_CHAR,
                     "The provided character set definition '%s' is invalid " +
                     "because it contains character '%s' which has already " +
-                    "been used.");
+                    "been used");
 
 
     registerMessage(MSGID_VIRTUAL_STATIC_GROUP_MULTIPLE_TARGETS,
                     "The virtual static group defined in entry %s contains " +
-                    "multiple target group DNs, but only one is allowed.");
+                    "multiple target group DNs, but only one is allowed");
     registerMessage(MSGID_VIRTUAL_STATIC_GROUP_CANNOT_DECODE_TARGET,
                     "Unable to decode \"%s\" as the target DN for group %s:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_VIRTUAL_STATIC_GROUP_NO_TARGET,
                     "The virtual static group defined in entry %s does not " +
-                    "contain a target group definition.");
+                    "contain a target group definition");
     registerMessage(MSGID_VIRTUAL_STATIC_GROUP_NESTING_NOT_SUPPORTED,
-                    "Virtual static groups do not support nesting.");
+                    "Virtual static groups do not support nesting");
     registerMessage(MSGID_VIRTUAL_STATIC_GROUP_NO_TARGET_GROUP,
                     "Target group %s referenced by virtual static group %s " +
-                    "does not exist.");
+                    "does not exist");
     registerMessage(MSGID_VIRTUAL_STATIC_GROUP_ALTERING_MEMBERS_NOT_SUPPORTED,
                     "Altering membership for virtual static group %s is not " +
-                    "allowed.");
+                    "allowed");
     registerMessage(MSGID_VIRTUAL_STATIC_GROUP_TARGET_CANNOT_BE_VIRTUAL,
                     "Virtual static group %s references target group %s " +
                     "which is itself a virtual static group.  One " +
                     "virtual static group is not allowed to reference " +
-                    "another as its target group.");
+                    "another as its target group");
   }
 }
 
diff --git a/opends/src/server/org/opends/server/messages/JebMessages.java b/opends/src/server/org/opends/server/messages/JebMessages.java
index 3433efa..65d0ebc 100644
--- a/opends/src/server/org/opends/server/messages/JebMessages.java
+++ b/opends/src/server/org/opends/server/messages/JebMessages.java
@@ -1103,179 +1103,179 @@
     registerMessage(MSGID_JEB_INCORRECT_ROUTING,
                     "The backend does not contain that part of the Directory " +
                     "Information Tree pertaining to the entry " +
-                    "'%s'.");
+                    "'%s'");
     registerMessage(MSGID_JEB_OPEN_DATABASE_FAIL,
-                    "The database could not be opened: %s.");
+                    "The database could not be opened: %s");
     registerMessage(MSGID_JEB_OPEN_ENV_FAIL,
-                    "The database environment could not be opened: %s.");
+                    "The database environment could not be opened: %s");
     registerMessage(MSGID_JEB_HIGHEST_ID_FAIL,
                     "The database highest entry identifier could not be " +
-                    "determined.");
+                    "determined");
     registerMessage(MSGID_JEB_FUNCTION_NOT_SUPPORTED,
                     "The requested operation is not supported by this " +
-                    "backend.");
+                    "backend");
     registerMessage(MSGID_JEB_CREATE_FAIL,
-                    "The backend database directory could not be created: %s.");
+                    "The backend database directory could not be created: %s");
     registerMessage(MSGID_JEB_REMOVE_FAIL,
-                    "The backend database files could not be removed: %s.");
+                    "The backend database files could not be removed: %s");
     registerMessage(MSGID_JEB_DIRECTORY_INVALID,
                     "The backend database directory '%s' is not a valid " +
-                    "directory.");
+                    "directory");
     registerMessage(MSGID_JEB_MISSING_DN2ID_RECORD,
-                    "The DN database does not contain a record for '%s'.");
+                    "The DN database does not contain a record for '%s'");
     registerMessage(MSGID_JEB_MISSING_ID2ENTRY_RECORD,
-                    "The entry database does not contain a record for ID %s.");
+                    "The entry database does not contain a record for ID %s");
     registerMessage(MSGID_JEB_ENTRY_DATABASE_CORRUPT,
                     "The entry database does not contain a valid record " +
-                    "for ID %s.");
+                    "for ID %s");
     registerMessage(MSGID_JEB_DATABASE_EXCEPTION,
                     "Database exception: %s");
     registerMessage(MSGID_CONFIG_DESCRIPTION_INDEX_ATTRIBUTE,
-                    "The attribute type name of the attribute index.");
+                    "The attribute type name of the attribute index");
     registerMessage(MSGID_CONFIG_DESCRIPTION_INDEX_TYPE,
                     "The kind of indexing to be enabled on an attribute " +
                     "index. Permitted values include \"equality\", " +
-                    "\"presence\", \"substring\" and \"ordering\").");
+                    "\"presence\", \"substring\" and \"ordering\")");
     registerMessage(MSGID_CONFIG_DESCRIPTION_INDEX_ENTRY_LIMIT,
                     "A performance tuning parameter for attribute indexes. " +
                     "The entry limit of an attribute index, where " +
                     "a value of 0 means there is no threshold. " +
                     "When the number of entries " +
                     "matching an index value reaches the limit, the " +
-                    "value is no longer maintained in the index.");
+                    "value is no longer maintained in the index");
     registerMessage(MSGID_CONFIG_DESCRIPTION_INDEX_SUBSTRING_LENGTH,
-                    "The length of substrings in a substring index.");
+                    "The length of substrings in a substring index");
     registerMessage(MSGID_CONFIG_INDEX_TYPE_NEEDS_MATCHING_RULE,
                     "The attribute '%s' cannot have indexing of type '%s' " +
-                    "because it does not have a corresponding matching rule.");
+                    "because it does not have a corresponding matching rule");
     registerMessage(MSGID_JEB_UNCHECKED_EXCEPTION,
-                    "Unchecked exception during database transaction.");
+                    "Unchecked exception during database transaction");
     registerMessage(MSGID_JEB_CLEAN_DATABASE_START,
-                    "Starting database cleaning on %d log file(s) in '%s'.");
+                    "Starting database cleaning on %d log file(s) in '%s'");
     registerMessage(MSGID_JEB_CLEAN_DATABASE_MARKED,
-                    "Marked %d log file(s) for cleaning.");
+                    "Marked %d log file(s) for cleaning");
     registerMessage(MSGID_JEB_CLEAN_DATABASE_FINISH,
                     "Finished database cleaning; " +
-                    "now %d log file(s) remaining.");
+                    "now %d log file(s) remaining");
     registerMessage(MSGID_JEB_SUBTREE_DELETE_SIZE_LIMIT_EXCEEDED,
                     "Exceeded the administrative limit on the number of " +
                     "entries that may be deleted in a subtree delete " +
                     "operation. The number of entries actually deleted was " +
                     "%d. The operation may be retried until all entries " +
-                    "in the subtree have been deleted.");
+                    "in the subtree have been deleted");
     registerMessage(MSGID_JEB_DELETED_ENTRY_COUNT,
-                    "The number of entries deleted was %d.");
+                    "The number of entries deleted was %d");
     registerMessage(MSGID_JEB_DUPLICATE_CONFIG_ENTRY,
                     "The configuration entry '%s' will be ignored. " +
                     "Only one configuration entry with object class '%s' is " +
-                    "allowed.");
+                    "allowed");
     registerMessage(MSGID_JEB_CONFIG_ENTRY_NOT_RECOGNIZED,
                     "The configuration entry '%s' will be ignored " +
-                    "because it is not recognized.");
+                    "because it is not recognized");
     registerMessage(MSGID_JEB_INDEX_ATTRIBUTE_TYPE_NOT_FOUND,
                     "The index configuration entry '%s' will be ignored " +
-                    "because it specifies an unknown attribute type '%s'.");
+                    "because it specifies an unknown attribute type '%s'");
     registerMessage(MSGID_JEB_DUPLICATE_INDEX_CONFIG,
                     "The index configuration entry '%s' will be ignored " +
                     "because it specifies the attribute type '%s', " +
                     "which has already been defined in another " +
-                    "index configuration entry.");
+                    "index configuration entry");
     registerMessage(MSGID_JEB_IO_ERROR,
                     "I/O error during backend operation: %s");
     registerMessage(MSGID_JEB_BACKEND_STARTED,
-                    "A database backend containing %d entries has started.");
+                    "A database backend containing %d entries has started");
     registerMessage(MSGID_JEB_IMPORT_PARENT_NOT_FOUND,
-                    "The parent entry '%s' does not exist.");
+                    "The parent entry '%s' does not exist");
     registerMessage(MSGID_JEB_IMPORT_ENTRY_EXISTS,
                     "The entry exists and the import options do not " +
-                    "allow it to be replaced.");
+                    "allow it to be replaced");
     registerMessage(MSGID_JEB_ATTRIBUTE_INDEX_NOT_CONFIGURED,
-                    "There is no index configured for attribute type '%s'.");
+                    "There is no index configured for attribute type '%s'");
     registerMessage(MSGID_JEB_SEARCH_NO_SUCH_OBJECT,
-                    "The search base entry '%s' does not exist.");
+                    "The search base entry '%s' does not exist");
     registerMessage(MSGID_JEB_ADD_NO_SUCH_OBJECT,
                     "The entry '%s' cannot be added because its parent " +
-                    "entry does not exist.");
+                    "entry does not exist");
     registerMessage(MSGID_JEB_DELETE_NO_SUCH_OBJECT,
                     "The entry '%s' cannot be removed because it does " +
-                    "not exist.");
+                    "not exist");
     registerMessage(MSGID_JEB_MODIFY_NO_SUCH_OBJECT,
                     "The entry '%s' cannot be modified because it does " +
-                    "not exist.");
+                    "not exist");
     registerMessage(MSGID_JEB_MODIFYDN_NO_SUCH_OBJECT,
                     "The entry '%s' cannot be renamed because it does " +
-                    "not exist.");
+                    "not exist");
     registerMessage(MSGID_JEB_ADD_ENTRY_ALREADY_EXISTS,
                     "The entry '%s' cannot be added because an entry with " +
-                    "that name already exists.");
+                    "that name already exists");
     registerMessage(MSGID_JEB_DELETE_NOT_ALLOWED_ON_NONLEAF,
                     "The entry '%s' cannot be removed because it has " +
-                    "subordinate entries.");
+                    "subordinate entries");
     registerMessage(MSGID_JEB_MODIFYDN_ALREADY_EXISTS,
                     "The entry cannot be renamed to '%s' because an entry " +
-                    "with that name already exists.");
+                    "with that name already exists");
     registerMessage(MSGID_JEB_NEW_SUPERIOR_NO_SUCH_OBJECT,
                     "The entry cannot be moved because the new parent " +
-                    "entry '%s' does not exist.");
+                    "entry '%s' does not exist");
     registerMessage(MSGID_JEB_CACHE_SIZE_AFTER_PRELOAD,
-                    "The database cache is %d MB after pre-loading.");
+                    "The database cache is %d MB after pre-loading");
     registerMessage(MSGID_JEB_BACKUP_CANNOT_GET_MAC,
                     "An error occurred while attempting to obtain the %s MAC " +
-                    "provider to create the signed hash for the backup:  %s.");
+                    "provider to create the signed hash for the backup:  %s");
     registerMessage(MSGID_JEB_BACKUP_CANNOT_GET_DIGEST,
                     "An error occurred while attempting to obtain the %s " +
-                    "message digest to create the hash for the backup:  %s.");
+                    "message digest to create the hash for the backup:  %s");
     registerMessage(MSGID_JEB_BACKUP_CANNOT_CREATE_ARCHIVE_FILE,
                     "An error occurred while trying to create the database " +
-                    "archive file %s in directory %s:  %s.");
+                    "archive file %s in directory %s:  %s");
     registerMessage(MSGID_JEB_BACKUP_CANNOT_GET_CIPHER,
                     "An error occurred while attempting to obtain the %s " +
-                    "cipher to use to encrypt the backup:  %s.");
+                    "cipher to use to encrypt the backup:  %s");
     registerMessage(MSGID_JEB_BACKUP_ZIP_COMMENT,
                     "%s backup %s of backend %s");
     registerMessage(MSGID_JEB_BACKUP_CANNOT_LIST_LOG_FILES,
                     "An error occurred while attempting to obtain a list " +
                     "of the files in directory %s to include in the database " +
-                    "backup:  %s.");
+                    "backup:  %s");
     registerMessage(MSGID_JEB_BACKUP_CANNOT_WRITE_ARCHIVE_FILE,
                     "An error occurred while attempting to back up database " +
-                    "file %s:  %s.");
+                    "file %s:  %s");
     registerMessage(MSGID_JEB_BACKUP_CANNOT_CLOSE_ZIP_STREAM,
                     "An error occurred while trying to close the database " +
-                    "archive file %s in directory %s:  %s.");
+                    "archive file %s in directory %s:  %s");
     registerMessage(MSGID_JEB_BACKUP_CANNOT_UPDATE_BACKUP_DESCRIPTOR,
                     "An error occurred while attempting to update the backup " +
                     "descriptor file %s with information about the database " +
-                    "backup:  %s.");
+                    "backup:  %s");
     registerMessage(MSGID_JEB_BACKUP_UNSIGNED_HASH_ERROR,
                     "The computed hash of backup %s is different to the " +
-                    "value computed at time of backup.");
+                    "value computed at time of backup");
     registerMessage(MSGID_JEB_BACKUP_SIGNED_HASH_ERROR,
                     "The computed signed hash of backup %s is different to " +
-                    "the value computed at time of backup.");
+                    "the value computed at time of backup");
     registerMessage(MSGID_JEB_INCR_BACKUP_REQUIRES_FULL,
                     "A full backup must be taken before an incremental " +
-                    "backup can be taken.");
+                    "backup can be taken");
     registerMessage(MSGID_JEB_CANNOT_RENAME_RESTORE_DIRECTORY,
                     "The directory %s, containing the files restored from " +
                     "backup, could not be renamed to the backend directory " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_JEB_INCR_BACKUP_FROM_WRONG_BASE,
                     "One of the following base backup IDs must be specified " +
-                    "for the incremental backup: %s.");
+                    "for the incremental backup: %s");
     registerMessage(MSGID_JEB_CANNOT_CREATE_BACKUP_TAG_FILE,
-                    "The backup tag file %s could not be created in %s.");
+                    "The backup tag file %s could not be created in %s");
     registerMessage(MSGID_JEB_BACKUP_CANNOT_RESTORE,
                     "An error occurred while attempting to restore the files " +
-                    "from backup %s: %s.");
+                    "from backup %s: %s");
     registerMessage(MSGID_JEB_BACKUP_MISSING_BACKUPID,
                     "The information for backup %s could not be found in " +
-                    "the backup directory %s.");
+                    "the backup directory %s");
     registerMessage(MSGID_JEB_BACKUP_FILE_UNCHANGED,
                     "Not changed: %s");
     registerMessage(MSGID_JEB_BACKUP_CLEANER_ACTIVITY,
                     "Including %s additional log file(s) due to cleaner " +
-                    "activity.");
+                    "activity");
     registerMessage(MSGID_JEB_BACKUP_VERIFY_FILE,
                     "Verifying: %s");
     registerMessage(MSGID_JEB_BACKUP_RESTORED_FILE,
@@ -1284,115 +1284,115 @@
                     "Archived: %s");
     registerMessage(MSGID_JEB_EXPORT_FINAL_STATUS,
                     "Exported %d entries and skipped %d in %d seconds " +
-                    "(average rate %.1f/sec).");
+                    "(average rate %.1f/sec)");
     registerMessage(MSGID_JEB_EXPORT_PROGRESS_REPORT,
                     "Exported %d records and skipped %d " +
-                    "(recent rate %.1f/sec).");
+                    "(recent rate %.1f/sec)");
     registerMessage(MSGID_JEB_IMPORT_THREAD_COUNT,
                     "Import thread count = %d");
     registerMessage(MSGID_JEB_IMPORT_BUFFER_SIZE,
                     "Buffer size per thread = %,d");
     registerMessage(MSGID_JEB_IMPORT_LDIF_PROCESSING_TIME,
-                    "LDIF processing took %d seconds.");
+                    "LDIF processing took %d seconds");
     registerMessage(MSGID_JEB_IMPORT_INDEX_PROCESSING_TIME,
-                    "Index processing took %d seconds.");
+                    "Index processing took %d seconds");
     registerMessage(MSGID_JEB_IMPORT_BEGINNING_INTERMEDIATE_MERGE,
                     "Ending LDIF import pass %d because the pass size has " +
-                    "been reached.  Beginning the intermediate index merge.");
+                    "been reached.  Beginning the intermediate index merge");
     registerMessage(MSGID_JEB_IMPORT_BEGINNING_FINAL_MERGE,
-                    "End of LDIF reached.  Beginning final index merge.");
+                    "End of LDIF reached.  Beginning final index merge");
     registerMessage(MSGID_JEB_IMPORT_RESUMING_LDIF_PROCESSING,
                     "Intermediate index merge processing complete (index " +
-                    "processing time %d seconds).  Resuming LDIF processing.");
+                    "processing time %d seconds).  Resuming LDIF processing");
     registerMessage(MSGID_JEB_IMPORT_FINAL_MERGE_COMPLETED,
-                    "Final index merge complete (processing time %d seconds).");
+                    "Final index merge complete (processing time %d seconds)");
     registerMessage(MSGID_JEB_IMPORT_CLOSING_DATABASE,
-                    "Flushing data to disk.");
+                    "Flushing data to disk");
     registerMessage(MSGID_JEB_IMPORT_FINAL_STATUS,
                     "Processed %d entries, imported %d, skipped %d, and " +
-                    "rejected %d in %d seconds (average rate %.1f/sec).");
+                    "rejected %d in %d seconds (average rate %.1f/sec)");
     registerMessage(MSGID_JEB_IMPORT_ENTRY_LIMIT_EXCEEDED_COUNT,
                     "Number of index values that exceeded the entry limit: %d");
     registerMessage(MSGID_JEB_IMPORT_PROGRESS_REPORT,
                     "Processed %d entries, skipped %d, and rejected %d " +
-                    "(recent rate %.1f/sec).");
+                    "(recent rate %.1f/sec)");
     registerMessage(MSGID_JEB_IMPORT_CACHE_AND_MEMORY_REPORT,
-                    "Free memory = %d MB, Cache miss rate = %.1f/entry.");
+                    "Free memory = %d MB, Cache miss rate = %.1f/entry");
     registerMessage(MSGID_JEB_INDEX_MERGE_NO_DATA,
-                    "There is no data to be loaded into the %s index.");
+                    "There is no data to be loaded into the %s index");
     registerMessage(MSGID_JEB_INDEX_MERGE_START,
-                    "Starting %d-way merge to load the %s index.");
+                    "Starting %d-way merge to load the %s index");
     registerMessage(MSGID_JEB_INDEX_MERGE_COMPLETE,
-                    "The %s index has been loaded.");
+                    "The %s index has been loaded");
     registerMessage(MSGID_JEB_VERIFY_CLEAN_FINAL_STATUS,
                     "Checked %d records and found %d error(s) in %d seconds " +
-                    "(average rate %.1f/sec).");
+                    "(average rate %.1f/sec)");
     registerMessage(MSGID_JEB_VERIFY_MULTIPLE_REFERENCE_COUNT,
-                    "Number of records referencing more than one entry: %d.");
+                    "Number of records referencing more than one entry: %d");
     registerMessage(MSGID_JEB_VERIFY_ENTRY_LIMIT_EXCEEDED_COUNT,
-                    "Number of records that exceed the entry limit: %d.");
+                    "Number of records that exceed the entry limit: %d");
     registerMessage(MSGID_JEB_VERIFY_AVERAGE_REFERENCE_COUNT,
-                    "Average number of entries referenced is %.2f/record.");
+                    "Average number of entries referenced is %.2f/record");
     registerMessage(MSGID_JEB_VERIFY_MAX_REFERENCE_COUNT,
                     "Maximum number of entries referenced " +
-                    "by any record is %d.");
+                    "by any record is %d");
     registerMessage(MSGID_JEB_VERIFY_FINAL_STATUS,
                     "Checked %d entries and found %d error(s) in %d seconds " +
-                    "(average rate %.1f/sec).");
+                    "(average rate %.1f/sec)");
     registerMessage(MSGID_JEB_VERIFY_ENTRY_LIMIT_STATS_HEADER,
                     "Statistics for records that have exceeded the " +
                     "entry limit:");
     registerMessage(MSGID_JEB_VERIFY_ENTRY_LIMIT_STATS_ROW,
-                    "  File %s has %d such record(s) min=%d max=%d median=%d.");
+                    "  File %s has %d such record(s) min=%d max=%d median=%d");
     registerMessage(MSGID_JEB_VERIFY_PROGRESS_REPORT,
                     "Processed %d records and found %d error(s) " +
-                    "(recent rate %.1f/sec).");
+                    "(recent rate %.1f/sec)");
     registerMessage(MSGID_JEB_VERIFY_CACHE_AND_MEMORY_REPORT,
-                    "Free memory = %d MB, Cache miss rate = %.1f/record.");
+                    "Free memory = %d MB, Cache miss rate = %.1f/record");
     registerMessage(MSGID_JEB_CONFIG_ATTR_REQUIRES_RESTART,
                     "The change to the %s attribute will not take effect " +
-                    "until the backend is restarted.");
+                    "until the backend is restarted");
     registerMessage(MSGID_JEB_INVALID_PAGED_RESULTS_COOKIE,
                     "The following paged results control cookie value was " +
-                    "not recognized: %s.");
+                    "not recognized: %s");
     registerMessage(MSGID_JEB_REFERRAL_RESULT_MESSAGE,
                     "A referral entry %s indicates that the operation must " +
-                    "be processed at a different server.");
+                    "be processed at a different server");
     registerMessage(MSGID_JEB_IMPORT_ENVIRONMENT_CONFIG,
-                    "Database environment properties: %s.");
+                    "Database environment properties: %s");
     registerMessage(MSGID_JEB_INCOMPATIBLE_ENTRY_VERSION,
                     "Entry record with ID %s is not compatible with this " +
                     "version of the backend database. " +
                     "Entry version: %x");
     registerMessage(MSGID_JEB_LOOKTHROUGH_LIMIT_EXCEEDED,
                     "This search operation has checked the maximum of %d " +
-                    "entries for matches.");
+                    "entries for matches");
     registerMessage(MSGID_JEB_SET_PERMISSIONS_FAILED,
                     "Unable to set file permissions for the backend database " +
-                    "directory %s.");
+                    "directory %s");
     registerMessage(MSGID_JEB_GET_ENTRY_COUNT_FAILED,
                     "Unable to determine the total number of entries in the " +
                     "container: %s");
     registerMessage(MSGID_JEB_REBUILD_START,
                     "Rebuild of index(es) %s started with %d total records " +
-                    "to process.");
+                    "to process");
     registerMessage(MSGID_JEB_REBUILD_PROGRESS_REPORT,
                     "%.1f%% Completed. Processed %d/%d records. " +
-                    "(recent rate %.1f/sec).");
+                    "(recent rate %.1f/sec)");
     registerMessage(MSGID_JEB_REBUILD_CACHE_AND_MEMORY_REPORT,
-                    "Free memory = %d MB, Cache miss rate = %.1f/record.");
+                    "Free memory = %d MB, Cache miss rate = %.1f/record");
     registerMessage(MSGID_JEB_REBUILD_FINAL_STATUS,
                     "Rebuild complete. Processed %d records in %d seconds " +
-                    "(average rate %.1f/sec).");
+                    "(average rate %.1f/sec)");
     registerMessage(MSGID_JEB_REBUILD_INDEX_FAILED,
                     "An error occured while rebuilding index %s: %s");
     registerMessage(MSGID_JEB_REBUILD_INSERT_ENTRY_FAILED,
                     "An error occured while inserting entry into the %s " +
                     "database/index: %s");
     registerMessage(MSGID_JEB_REBUILD_INDEX_CONFLICT,
-                    "Another rebuild of index %s is already in progress.");
+                    "Another rebuild of index %s is already in progress");
     registerMessage(MSGID_JEB_REBUILD_BACKEND_ONLINE,
                     "Rebuilding system index(es) must be done with the " +
-                    "backend containing the base DN disabled.");
+                    "backend containing the base DN disabled");
   }
 }
diff --git a/opends/src/server/org/opends/server/messages/LoggerMessages.java b/opends/src/server/org/opends/server/messages/LoggerMessages.java
index 2895bb0..2310ab7 100644
--- a/opends/src/server/org/opends/server/messages/LoggerMessages.java
+++ b/opends/src/server/org/opends/server/messages/LoggerMessages.java
@@ -137,39 +137,39 @@
   {
     registerMessage(MSGID_LOG_ACCESS_CANNOT_ADD_FILE_HANDLER,
                     "Unable to add a file handler for the Directory Server " +
-                    "access logger:  %s.");
+                    "access logger:  %s");
     registerMessage(MSGID_LOG_ERROR_CANNOT_ADD_FILE_HANDLER,
                     "Unable to add a file handler for the Directory Server " +
-                    "error logger:  %s.");
+                    "error logger:  %s");
     registerMessage(MSGID_LOG_DEBUG_CANNOT_ADD_FILE_HANDLER,
                     "Unable to add a file handler for the Directory Server " +
-                    "debug logger:  %s.");
+                    "debug logger:  %s");
     registerMessage(MSGID_LOG_DESCRIPTION_SSL_CERT_NICKNAME,
                     "Specifies the nickname of the certificate that the " +
                     "connection handler should use when accepting SSL-based " +
                     "connections or performing StartTLS negotiation.  " +
                     "Changes to this configuration attribute will not take " +
                     "effect until the connection handler is disabled and " +
-                    "re-enabled, or until the Directory Server is restarted.");
+                    "re-enabled, or until the Directory Server is restarted");
     registerMessage(MSGID_LOGGER_ROTATION_SIZE_LIMIT,
                     "Specifies the size limit for the file before rotation " +
-                    "takes place.");
+                    "takes place");
     registerMessage(MSGID_LOGGER_ROTATION_FIXED_TIME_LIMIT,
                     "Specifies the time interval before the log file rotation" +
-                    " takes place.");
+                    " takes place");
     registerMessage(MSGID_LOGGER_RETENTION_NUMBER_OF_FILES,
                     "Specifies the number of log files that need to " +
-                    " be retained.");
+                    " be retained");
     registerMessage(MSGID_LOGGER_RETENTION_DISK_SPACE_USED,
                     "Specifies the amount of disk space that log files " +
-                    " can use.");
+                    " can use");
     registerMessage(MSGID_LOGGER_THREAD_INTERVAL,
                     "Specifies the time interval that the logger thread " +
-                    " wakes up after.");
+                    " wakes up after");
     registerMessage(MSGID_LOGGER_BUFFER_SIZE,
-                    "Specifies the log file buffer size.");
+                    "Specifies the log file buffer size");
     registerMessage(MSGID_LOGGER_RETENTION_FREE_DISK_SPACE,
-                    "Specifies the free disk space allowed.");
+                    "Specifies the free disk space allowed");
 
   }
 }
diff --git a/opends/src/server/org/opends/server/messages/MessageHandler.java b/opends/src/server/org/opends/server/messages/MessageHandler.java
index b83ecd9..f6bceb4 100644
--- a/opends/src/server/org/opends/server/messages/MessageHandler.java
+++ b/opends/src/server/org/opends/server/messages/MessageHandler.java
@@ -62,8 +62,9 @@
  *   <LI>009 -- Generic backend processing</LI>
  *   <LI>00A -- Directory Server tools</LI>
  *   <LI>00B -- Task processing</LI>
-     <LI>00C -- Access Control</LI>
-     <LI>00D -- Administration framework</LI>
+ *   <LI>00C -- Access Control</LI>
+ *   <LI>00D -- Administration framework</LI>
+ *   <LI>00E -- Synchronization</LI>
  *   <LI>800 through FFE -- Reserved for third-party modules</LI>
  *   <LI>FFF -- User-defined processing</LI>
  * </UL>
@@ -153,12 +154,6 @@
   public static final int CATEGORY_MASK_JEB = 0x00800000;
 
 
-  /**
-   * The category bitmask used for messages associated with the Synchronization.
-   */
-  public static final int CATEGORY_MASK_SYNC = 0x01000000;
-
-
 
   /**
    * The category bitmask used for messages associated with generic backends.
@@ -193,6 +188,12 @@
   public static final int CATEGORY_MASK_ADMIN = 0x00D00000;
 
 
+  /**
+   * The category bitmask used for messages associated with the Synchronization.
+   */
+  public static final int CATEGORY_MASK_SYNC = 0x0E000000;
+
+
 
   /**
    * The category bitmask that will be used for messages associated with
@@ -292,6 +293,7 @@
     TaskMessages.registerMessages();
     AdminMessages.registerMessages();
     AciMessages.registerMessages();
+    SynchronizationMessages.registerMessages();
   }
 
 
@@ -387,7 +389,7 @@
    * @param  messageID     The unique identifier assigned to this message.
    * @param  formatString  The format string to use for this message.
    */
-  public static void registerMessage(int messageID, String formatString)
+  static void registerMessage(int messageID, String formatString)
   {
     messageMap.put(messageID, formatString);
   }
diff --git a/opends/src/server/org/opends/server/messages/PluginMessages.java b/opends/src/server/org/opends/server/messages/PluginMessages.java
index 289dbba..450051b 100644
--- a/opends/src/server/org/opends/server/messages/PluginMessages.java
+++ b/opends/src/server/org/opends/server/messages/PluginMessages.java
@@ -797,7 +797,7 @@
     registerMessage(MSGID_PLUGIN_NULL_CONFIG_ENTRY,
                     "Unable to initialize an instance of the plugin defined " +
                     "in class %s because the provided configuration entry " +
-                    "was null.");
+                    "was null");
 
 
     registerMessage(MSGID_PLUGIN_DESCRIPTION_SHUTDOWN_PASSWORD,
@@ -807,72 +807,72 @@
                     "be required (although it will still be necessary to " +
                     "authenticate to the server in order to be able to add " +
                     "necessary task entry).  Changes to this password will " +
-                    "take effect immediately.");
+                    "take effect immediately");
 
 
     registerMessage(MSGID_PLUGIN_ADLIST_NO_PLUGIN_TYPES,
                     "The LDAP attribute description list plugin instance " +
                     "defined in configuration entry %s does not list any " +
                     "plugin types.  This plugin must be configured to " +
-                    "operate as a pre-parse search plugin.");
+                    "operate as a pre-parse search plugin");
     registerMessage(MSGID_PLUGIN_ADLIST_INVALID_PLUGIN_TYPE,
                     "The LDAP attribute description list plugin instance " +
                     "defined in configuration entry %s lists an invalid " +
                     "plugin type %s.  This plugin may only be used as a " +
-                    "pre-parse search plugin.");
+                    "pre-parse search plugin");
 
 
     registerMessage(MSGID_PLUGIN_PROFILER_NO_PLUGIN_TYPES,
                     "The Directory Server profiler plugin instance defined " +
                     "in configuration entry %s does not list any plugin " +
                     "types.  This plugin must be configured to operate as a " +
-                    "startup plugin.");
+                    "startup plugin");
     registerMessage(MSGID_PLUGIN_PROFILER_INVALID_PLUGIN_TYPE,
                     "The Directory Server profiler plugin instance defined " +
                     "in configuration entry %s lists an invalid plugin type " +
-                    "%s.  This plugin may only be used as a startup plugin.");
+                    "%s.  This plugin may only be used as a startup plugin");
     registerMessage(MSGID_PLUGIN_PROFILER_DESCRIPTION_PROFILE_DIR,
                     "Specifies the path to the directory into which profile " +
                     "information will be written.  The directory must exist " +
                     "and the Directory Server must have permission to create " +
                     "new files in it.  Changes to this configuration " +
-                    "attribute will take effect immediately.");
+                    "attribute will take effect immediately");
     registerMessage(MSGID_PLUGIN_PROFILER_CANNOT_DETERMINE_PROFILE_DIR,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " +  ATTR_PROFILE_DIR +
                     " attribute in the %s entry:  %s.  The default profile " +
-                    "directory of %s will be used.");
+                    "directory of %s will be used");
     registerMessage(MSGID_PLUGIN_PROFILER_CANNOT_WRITE_PROFILE_DATA,
                     "An unexpected error occurred when the profiler plugin " +
                     "defined in configuration entry %s attempted to write " +
-                    "the information captured to output file %s:  %s.");
+                    "the information captured to output file %s:  %s");
     registerMessage(MSGID_PLUGIN_PROFILER_DESCRIPTION_AUTOSTART,
                     "Indicates whether the profiler plugin should start " +
                     "collecting data automatically when the Directory Server " +
                     "is started.  This will only be read when the server is " +
                     "started, and any changes will take effect on the next " +
-                    "restart.");
+                    "restart");
     registerMessage(MSGID_PLUGIN_PROFILER_CANNOT_DETERMINE_AUTOSTART,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " +  ATTR_PROFILE_AUTOSTART +
                     " attribute in the %s entry:  %s.  Profiling information " +
                     "will not automatically be captured on startup and must " +
-                    "be manually enabled.");
+                    "be manually enabled");
     registerMessage(MSGID_PLUGIN_PROFILER_DESCRIPTION_INTERVAL,
                     "Specifies the sample interval that should be used when " +
                     "capturing profiling information in the server.  Changes " +
                     "to this configuration attribute will take effect the " +
-                    "next time the profiler is started.");
+                    "next time the profiler is started");
     registerMessage(MSGID_PLUGIN_PROFILER_CANNOT_DETERMINE_INTERVAL,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " + ATTR_PROFILE_INTERVAL +
                     "attribute in the %s entry:  %s.  The default sample " +
-                    "interval of %d milliseconds will be used.");
+                    "interval of %d milliseconds will be used");
     registerMessage(MSGID_PLUGIN_PROFILER_DESCRIPTION_STATE,
                     "Specifies the current state for the profiler.  It will " +
                     "be either \"enabled\" (which indicates that the " +
                     "profiler thread is actively collecting data) or " +
-                    "\"disabled\".  This is a read-only attribute.");
+                    "\"disabled\".  This is a read-only attribute");
     registerMessage(MSGID_PLUGIN_PROFILER_DESCRIPTION_ACTION,
                     "Specifies the action that should be taken by the " +
                     "profiler.  A value of \"start\" will cause the profiler " +
@@ -882,194 +882,194 @@
                     "and a value of \"cancel\" will cause the profiler " +
                     "thread to stop collecting data and discard anything " +
                     "that has been captured.  These operations will occur " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_PLUGIN_PROFILER_INVALID_PROFILE_DIR,
                     "The profile directory %s specified in attribute " +
                     ATTR_PROFILE_DIR + " of configuration entry %s is " +
                     "invalid because the specified path does not exist or " +
-                    "is not a directory.");
+                    "is not a directory");
     registerMessage(MSGID_PLUGIN_PROFILER_CANNOT_DETERMINE_ACTION,
                     "An unexpected error occurred while attempting to " +
                     "determine the value of the " + ATTR_PROFILE_ACTION +
                     " attribute in the %s entry:  %s.  No action will be " +
-                    "taken.");
+                    "taken");
     registerMessage(MSGID_PLUGIN_PROFILER_UPDATED_INTERVAL,
                     "The sample interval for the profiler plugin defined in " +
                     "configuration entry %s has been updated to %d " +
-                    "milliseconds.");
+                    "milliseconds");
     registerMessage(MSGID_PLUGIN_PROFILER_CANNOT_UPDATE_INTERVAL,
                     "An unexpected error occurred while attempting to update " +
                     "the sample interval for the profiler plugin defined in " +
-                    "configuration entry %s:  %s.");
+                    "configuration entry %s:  %s");
     registerMessage(MSGID_PLUGIN_PROFILER_UPDATED_DIRECTORY,
                     "The profile directory for the profiler plugin defined " +
-                    "in configuration entry %s has been changed to %s.");
+                    "in configuration entry %s has been changed to %s");
     registerMessage(MSGID_PLUGIN_PROFILER_CANNOT_UPDATE_DIRECTORY,
                     "An unexpected error occurred while attempting to update " +
                     "the profile directory for the profiler plugin defined " +
-                    "in configuration entry %s:  %s.");
+                    "in configuration entry %s:  %s");
     registerMessage(MSGID_PLUGIN_PROFILER_STARTED_PROFILING,
                     "The profiler plugin defined in configuration entry %s " +
-                    "has been activated and has started capturing data.");
+                    "has been activated and has started capturing data");
     registerMessage(MSGID_PLUGIN_PROFILER_ALREADY_PROFILING,
                     "The profiler plugin defined in configuration entry %s " +
                     "is already active, and therefore the request to start " +
-                    "profiling has been ignored.");
+                    "profiling has been ignored");
     registerMessage(MSGID_PLUGIN_PROFILER_NOT_RUNNING,
                     "The profiler plugin defined in configuration entry %s " +
                     "received a request to stop capturing data but it was " +
-                    "not active so no action has been taken.");
+                    "not active so no action has been taken");
     registerMessage(MSGID_PLUGIN_PROFILER_STOPPED_PROFILING,
                     "The profiler plugin defined in configuration entry %s " +
-                    "has been stopped and is no longer capturing data.");
+                    "has been stopped and is no longer capturing data");
     registerMessage(MSGID_PLUGIN_PROFILER_WROTE_PROFILE_DATA,
                     "The data collected by the profiler plugin defined in " +
-                    "configuration entry %s has been written to %s.");
+                    "configuration entry %s has been written to %s");
     registerMessage(MSGID_PLUGIN_PROFILER_UNKNOWN_ACTION,
                     "The profiler plugin defined in configuration entry %s " +
                     "has been requested to perform an action %s that is " +
-                    "not recognized by the server.  No action will be taken.");
+                    "not recognized by the server.  No action will be taken");
     registerMessage(MSGID_PLUGIN_PROFILER_SKIPPING_ACTION,
                     "A profiler action %s was requested for the profiler " +
                     "plugin defined in configuration entry %s, but one or " +
                     "more problems were encountered with the plugin " +
                     "configuration and therefore the requested action will " +
-                    "be skipped.");
+                    "be skipped");
     registerMessage(MSGID_PLUGIN_PROFILER_CANNOT_PERFORM_ACTION,
                     "An unexpected error occurred while attempting to " +
                     "process the requested action for the profiler plugin " +
-                    "defined in configuration entry %s:  %s.");
+                    "defined in configuration entry %s:  %s");
 
 
     registerMessage(MSGID_PLUGIN_STARTUP_PLUGIN_EXCEPTION,
                     "The startup plugin defined in configuration entry %s " +
                     "threw an exception when it was invoked during the " +
                     "Directory Server startup process:  %s.  The server " +
-                    "startup process has been aborted.");
+                    "startup process has been aborted");
     registerMessage(MSGID_PLUGIN_STARTUP_PLUGIN_RETURNED_NULL,
                     "The startup plugin defined in configuration entry %s " +
                     "returned a null value when it was invoked during the " +
                     "Directory Server startup process.  This is an illegal " +
                     "return value, and the server startup process has been " +
-                    "aborted.");
+                    "aborted");
     registerMessage(MSGID_PLUGIN_STARTUP_PLUGIN_FAIL_CONTINUE,
                     "The startup plugin defined in configuration entry %s " +
                     "encountered an error when it was invoked during the " +
                     "Directory Server startup process:  %s (error ID %d).  " +
                     "The startup process will continue, but this failure " +
-                    "may impact the operation of the server.");
+                    "may impact the operation of the server");
     registerMessage(MSGID_PLUGIN_STARTUP_PLUGIN_FAIL_ABORT,
                     "The startup plugin defined in configuration entry %s " +
                     "encountered an error when it was invoked during the " +
                     "Directory Server startup process:  %s (error ID %d).  " +
-                    "The server startup process has been aborted.");
+                    "The server startup process has been aborted");
 
 
     registerMessage(MSGID_PLUGIN_SHUTDOWN_PLUGIN_EXCEPTION,
                     "The shutdown plugin defined in configuration entry %s " +
                     "threw an exception when it was invoked during the " +
-                    "Directory Server shutdown process:  %s.");
+                    "Directory Server shutdown process:  %s");
 
 
     registerMessage(MSGID_PLUGIN_POST_CONNECT_PLUGIN_EXCEPTION,
                     "The post-connect plugin defined in configuration entry " +
                     "%s threw an exception when it was invoked for " +
                     "connection %d from %s:  %s.  The connection will be " +
-                    "terminated.");
+                    "terminated");
     registerMessage(MSGID_PLUGIN_POST_CONNECT_PLUGIN_RETURNED_NULL,
                     "The post-connect plugin defined in configuration entry " +
                     "%s returned null when invoked for connection %d from " +
                     "%s.  This is an illegal response, and the connection " +
-                    "will be terminated.");
+                    "will be terminated");
 
 
     registerMessage(MSGID_PLUGIN_POST_DISCONNECT_PLUGIN_EXCEPTION,
                     "The post-disconnect plugin defined in configuration " +
                     "entry %s threw an exception when it was invoked for " +
-                    "connection %d from %s:  %s.");
+                    "connection %d from %s:  %s");
     registerMessage(MSGID_PLUGIN_POST_DISCONNECT_PLUGIN_RETURNED_NULL,
                     "The post-disconnect plugin defined in configuration " +
                     "entry %s returned null when invoked for connection %d " +
-                    "from %s.  This is an illegal response.");
+                    "from %s.  This is an illegal response");
 
 
     registerMessage(MSGID_PLUGIN_LDIF_IMPORT_PLUGIN_EXCEPTION,
                     "The LDIF import plugin defined in configuration entry " +
                     "%s threw an exception when it was invoked on entry " +
-                    "%s:  %s.");
+                    "%s:  %s");
     registerMessage(MSGID_PLUGIN_LDIF_IMPORT_PLUGIN_RETURNED_NULL,
                     "The LDIF import plugin defined in configuration entry " +
                     "%s returned null when invoked on entry %s.  This is an " +
-                    "illegal response.");
+                    "illegal response");
     registerMessage(MSGID_PLUGIN_LDIF_EXPORT_PLUGIN_EXCEPTION,
                     "The LDIF export plugin defined in configuration entry " +
                     "%s threw an exception when it was invoked on entry " +
-                    "%s:  %s.");
+                    "%s:  %s");
     registerMessage(MSGID_PLUGIN_LDIF_EXPORT_PLUGIN_RETURNED_NULL,
                     "The LDIF export plugin defined in configuration entry " +
                     "%s returned null when invoked on entry %s.  This is an " +
-                    "illegal response.");
+                    "illegal response");
 
 
     registerMessage(MSGID_PLUGIN_PRE_PARSE_PLUGIN_EXCEPTION,
                     "The pre-parse %s plugin defined in configuration " +
                     "entry %s threw an exception when it was invoked for " +
                     "connection %d operation %d:  %s.  Processing on this " +
-                    "operation will be terminated.");
+                    "operation will be terminated");
     registerMessage(MSGID_PLUGIN_PRE_PARSE_PLUGIN_RETURNED_NULL,
                     "The pre-parse %s plugin defined in configuration " +
                     "entry %s returned null when invoked for connection %d " +
                     "operation %s.  This is an illegal response, and " +
-                    "processing on this operation will be terminated.");
+                    "processing on this operation will be terminated");
 
 
     registerMessage(MSGID_PLUGIN_PRE_OPERATION_PLUGIN_EXCEPTION,
                     "The pre-operation %s plugin defined in configuration " +
                     "entry %s threw an exception when it was invoked for " +
                     "connection %d operation %d:  %s.  Processing on this " +
-                    "operation will be terminated.");
+                    "operation will be terminated");
     registerMessage(MSGID_PLUGIN_PRE_OPERATION_PLUGIN_RETURNED_NULL,
                     "The pre-operation %s plugin defined in configuration " +
                     "entry %s returned null when invoked for connection %d " +
                     "operation %s.  This is an illegal response, and " +
-                    "processing on this operation will be terminated.");
+                    "processing on this operation will be terminated");
 
 
     registerMessage(MSGID_PLUGIN_POST_OPERATION_PLUGIN_EXCEPTION,
                     "The post-operation %s plugin defined in configuration " +
                     "entry %s threw an exception when it was invoked for " +
                     "connection %d operation %d:  %s.  Processing on this " +
-                    "operation will be terminated.");
+                    "operation will be terminated");
     registerMessage(MSGID_PLUGIN_POST_OPERATION_PLUGIN_RETURNED_NULL,
                     "The post-operation %s plugin defined in configuration " +
                     "entry %s returned null when invoked for connection %d " +
                     "operation %s.  This is an illegal response, and " +
-                    "processing on this operation will be terminated.");
+                    "processing on this operation will be terminated");
 
 
     registerMessage(MSGID_PLUGIN_POST_RESPONSE_PLUGIN_EXCEPTION,
                     "The post-response %s plugin defined in configuration " +
                     "entry %s threw an exception when it was invoked for " +
                     "connection %d operation %d:  %s.  Processing on this " +
-                    "operation will be terminated.");
+                    "operation will be terminated");
     registerMessage(MSGID_PLUGIN_POST_RESPONSE_PLUGIN_RETURNED_NULL,
                     "The post-response %s plugin defined in configuration " +
                     "entry %s returned null when invoked for connection %d " +
                     "operation %s.  This is an illegal response, and " +
-                    "processing on this operation will be terminated.");
+                    "processing on this operation will be terminated");
 
 
     registerMessage(MSGID_PLUGIN_SEARCH_ENTRY_PLUGIN_EXCEPTION,
                     "The search result entry plugin defined in configuration " +
                     "entry %s threw an exception when it was invoked for " +
                     "connection %d operation %d with entry %s:  %s.  " +
-                    "Processing on this search operation will be terminated.");
+                    "Processing on this search operation will be terminated");
     registerMessage(MSGID_PLUGIN_SEARCH_ENTRY_PLUGIN_RETURNED_NULL,
                     "The search result entry plugin defined in configuration " +
                     "entry %s returned null when invoked for connection %d " +
                     "operation %s with entry %s.  This is an illegal " +
                     "response, and processing on this search operation will " +
-                    "be terminated.");
+                    "be terminated");
 
 
     registerMessage(MSGID_PLUGIN_SEARCH_REFERENCE_PLUGIN_EXCEPTION,
@@ -1077,77 +1077,77 @@
                     "configuration entry %s threw an exception when it was " +
                     "invoked for connection %d operation %d with referral " +
                     "URL(s) %s:  %s.  Processing on this search operation " +
-                    "will be terminated.");
+                    "will be terminated");
     registerMessage(MSGID_PLUGIN_SEARCH_REFERENCE_PLUGIN_RETURNED_NULL,
                     "The search result reference plugin defined in " +
                     "configuration entry %s returned null when invoked for " +
                     "connection %d operation %s with referral URL(s) %s.  " +
                     "This is an illegal response, and processing on this " +
-                    "search operation will be terminated.");
+                    "search operation will be terminated");
 
 
     registerMessage(MSGID_PLUGIN_INTERMEDIATE_RESPONSE_PLUGIN_EXCEPTION,
                     "The intermediate response plugin defined in " +
                     "configuration entry %s threw an exception when it was " +
                     "invoked for connection %d operation %d:  %s.  " +
-                    "Processing on this operation will be terminated.");
+                    "Processing on this operation will be terminated");
     registerMessage(MSGID_PLUGIN_INTERMEDIATE_RESPONSE_PLUGIN_RETURNED_NULL,
                     "The intermediate response plugin defined in " +
                     "configuration entry %s returned null when invoked for " +
                     "connection %d operation %s.  This is an illegal " +
                     "response, and processing on this operation will be " +
-                    "terminated.");
+                    "terminated");
 
 
     registerMessage(MSGID_PLUGIN_LASTMOD_INVALID_PLUGIN_TYPE,
                     "An attempt was made to register the LastMod plugin to " +
                     "be invoked as a %s plugin.  This plugin type is not " +
-                    "allowed for this plugin.");
+                    "allowed for this plugin");
 
 
     registerMessage(MSGID_PROFILEVIEWER_TOOL_DESCRIPTION,
                     "This utility may be used to view information in data " +
-                    "files captured by the Directory Server profiler.");
+                    "files captured by the Directory Server profiler");
     registerMessage(MSGID_PROFILEVIEWER_DESCRIPTION_FILENAMES,
                     "Specifies the path to a profile data file.  This  " +
                     "argument may be provided more than once to analyze data " +
-                    "from multiple data files.");
+                    "from multiple data files");
     registerMessage(MSGID_PROFILEVIEWER_DESCRIPTION_USE_GUI,
                     "Indicates whether to view the profile information in " +
                     "GUI mode or to write the resulting data to standard " +
-                    "output.");
+                    "output");
     registerMessage(MSGID_PROFILEVIEWER_DESCRIPTION_USAGE,
-                    "Displays this usage information.");
+                    "Displays this usage information");
     registerMessage(MSGID_PROFILEVIEWER_CANNOT_INITIALIZE_ARGS,
                     "An unexpected error occurred while attempting to " +
-                    "initialize the command-line arguments:  %s.");
+                    "initialize the command-line arguments:  %s");
     registerMessage(MSGID_PROFILEVIEWER_ERROR_PARSING_ARGS,
                     "An error occurred while parsing the command-line " +
-                    "arguments:  %s.");
+                    "arguments:  %s");
     registerMessage(MSGID_PROFILEVIEWER_CANNOT_PROCESS_DATA_FILE,
                     "An error occurred while trying to process the profile " +
-                    "data in file %s:  %s.");
+                    "data in file %s:  %s");
 
 
     registerMessage(MSGID_PLUGIN_ENTRYUUID_INVALID_PLUGIN_TYPE,
                     "An attempt was made to register the EntryUUID plugin to " +
                     "be invoked as a %s plugin.  This plugin type is not " +
-                    "allowed for this plugin.");
+                    "allowed for this plugin");
 
 
     registerMessage(MSGID_PLUGIN_PWPIMPORT_INVALID_PLUGIN_TYPE,
                     "An attempt was made to register the password policy " +
                     "import plugin to be invoked as a %s plugin.  This " +
-                    "plugin type is not allowed for this plugin.");
+                    "plugin type is not allowed for this plugin");
     registerMessage(MSGID_PLUGIN_PWPIMPORT_ERROR_ENCODING_PASSWORD,
                     "An error occurred while attempting to encode a password " +
                     "value stored in attribute %s of user entry %s:  %s.  " +
-                    "Password values for this user will not be encoded.");
+                    "Password values for this user will not be encoded");
 
 
     registerMessage(MSGID_PLUGIN_TYPE_NOT_SUPPORTED,
                     "The plugin defined in configuration entry %s does not " +
-                    "support the %s plugin type.");
+                    "support the %s plugin type");
   }
 }
 
diff --git a/opends/src/server/org/opends/server/messages/ProtocolMessages.java b/opends/src/server/org/opends/server/messages/ProtocolMessages.java
index 0e5236e..23889c4 100644
--- a/opends/src/server/org/opends/server/messages/ProtocolMessages.java
+++ b/opends/src/server/org/opends/server/messages/ProtocolMessages.java
@@ -4395,198 +4395,198 @@
   {
     registerMessage(MSGID_ASN1_NULL_ELEMENT,
                     "Cannot decode the provided byte array as an ASN.1 " +
-                    "element because the array was null.");
+                    "element because the array was null");
     registerMessage(MSGID_ASN1_SHORT_ELEMENT,
                     "Cannot decode the provided byte array as an ASN.1 " +
                     "element because the length of the array (%d bytes) is " +
                     "less than the minimum required for an ASN.1 element (2 " +
-                    "bytes).");
+                    "bytes)");
     registerMessage(MSGID_ASN1_INVALID_NUM_LENGTH_BYTES,
                     "Cannot decode the provided byte array as an ASN.1 " +
                     "element because it contained a multi-byte length with " +
-                    "an invalid number of bytes (%d).");
+                    "an invalid number of bytes (%d)");
     registerMessage(MSGID_ASN1_TRUNCATED_LENGTH,
                     "Cannot decode the provided byte array as an ASN.1 " +
                     "element because it contained a multi-byte length of %d " +
                     "bytes but the array was too short to contain the " +
-                    "entire length.");
+                    "entire length");
     registerMessage(MSGID_ASN1_LENGTH_MISMATCH,
                     "Cannot decode the provided byte array as an ASN.1 " +
                     "element because the decoded value length (%d bytes) " +
                     "does not equal the number of bytes remaining in the " +
-                    "provided array (%d).");
+                    "provided array (%d)");
     registerMessage(MSGID_ASN1_ELEMENT_SET_NULL,
                     "Cannot decode the provided byte array as a set of ASN.1 " +
-                    "elements because the array was null.");
+                    "elements because the array was null");
     registerMessage(MSGID_ASN1_ELEMENT_SET_NO_LENGTH,
                     "Cannot decode the provided byte array as a set of ASN.1 " +
                     "elements because the end of the array was reached after " +
                     "having read the BER type but none of the value for an " +
-                    "element.");
+                    "element");
     registerMessage(MSGID_ASN1_ELEMENT_SET_INVALID_NUM_LENGTH_BYTES,
                     "Cannot decode the provided byte array as a set of ASN.1 " +
                     "elements because it contained a multi-byte length with " +
-                    "an invalid number of bytes (%d).");
+                    "an invalid number of bytes (%d)");
     registerMessage(MSGID_ASN1_ELEMENT_SET_TRUNCATED_LENGTH,
                     "Cannot decode the provided byte array as a set of ASN.1 " +
                     "elements because it contained a multi-byte length of %d " +
                     "bytes but the array was too short to contain the " +
-                    "entire length.");
+                    "entire length");
     registerMessage(MSGID_ASN1_ELEMENT_SET_TRUNCATED_VALUE,
                     "Cannot decode the provided byte array as a set of ASN.1 " +
                     "elements because the decoded length of an element (%d) " +
-                    "is more than the number of bytes remaining (%d).");
+                    "is more than the number of bytes remaining (%d)");
 
 
     registerMessage(MSGID_ASN1_BOOLEAN_SET_VALUE_NULL,
                     "Cannot decode the provided byte array as the value of " +
-                    "an ASN.1 Boolean element because the array was null.");
+                    "an ASN.1 Boolean element because the array was null");
     registerMessage(MSGID_ASN1_BOOLEAN_SET_VALUE_INVALID_LENGTH,
                     "Cannot decode the provided byte array as the value of " +
                     "an ASN.1 Boolean element because the array did not have " +
-                    "a length of exactly one byte (provided length was %d).");
+                    "a length of exactly one byte (provided length was %d)");
     registerMessage(MSGID_ASN1_BOOLEAN_DECODE_ELEMENT_NULL,
                     "Cannot decode the provided ASN.1 element as a Boolean " +
-                    "element because the provided element was null.");
+                    "element because the provided element was null");
     registerMessage(MSGID_ASN1_BOOLEAN_DECODE_ELEMENT_INVALID_LENGTH,
                     "Cannot decode the provided ASN.1 element as a Boolean " +
                     "element because the length of the element value was not " +
-                    "exactly one byte (actual length was %d).");
+                    "exactly one byte (actual length was %d)");
     registerMessage(MSGID_ASN1_BOOLEAN_DECODE_ARRAY_NULL,
                     "Cannot decode the provided byte array as an ASN.1 " +
-                    "Boolean element because the array was null.");
+                    "Boolean element because the array was null");
     registerMessage(MSGID_ASN1_BOOLEAN_SHORT_ELEMENT,
                     "Cannot decode the provided byte array as an ASN.1 " +
                     "Boolean element because the length of the array (%d " +
                     "bytes) is less than the minimum required for a Boolean " +
-                    "element (3 bytes).");
+                    "element (3 bytes)");
     registerMessage(MSGID_ASN1_BOOLEAN_DECODE_ARRAY_INVALID_LENGTH,
                     "Cannot decode the provided byte array as an ASN.1 " +
                     "Boolean element because the decoded value length was " +
-                    "not exactly one byte (decoded length was %d).");
+                    "not exactly one byte (decoded length was %d)");
 
 
     registerMessage(MSGID_ASN1_NULL_SET_VALUE_INVALID_LENGTH,
                     "Cannot decode the provided byte array as the value of " +
                     "an ASN.1 null element because the array did not have " +
-                    "a length of exactly zero byte (provided length was %d).");
+                    "a length of exactly zero byte (provided length was %d)");
     registerMessage(MSGID_ASN1_NULL_DECODE_ELEMENT_NULL,
                     "Cannot decode the provided ASN.1 element as a null " +
-                    "element because the provided element was null.");
+                    "element because the provided element was null");
     registerMessage(MSGID_ASN1_NULL_DECODE_ELEMENT_INVALID_LENGTH,
                     "Cannot decode the provided ASN.1 element as a null " +
                     "element because the length of the element value was not " +
-                    "exactly zero bytes (actual length was %d).");
+                    "exactly zero bytes (actual length was %d)");
     registerMessage(MSGID_ASN1_NULL_DECODE_ARRAY_NULL,
                     "Cannot decode the provided byte array as an ASN.1 null " +
-                    "element because the array was null.");
+                    "element because the array was null");
     registerMessage(MSGID_ASN1_NULL_DECODE_ARRAY_INVALID_LENGTH,
                     "Cannot decode the provided byte array as an ASN.1 null " +
                     "element because the decoded value length was not " +
-                    "exactly zero bytes (decoded length was %d).");
+                    "exactly zero bytes (decoded length was %d)");
 
 
     registerMessage(MSGID_ASN1_OCTET_STRING_DECODE_ELEMENT_NULL,
                     "Cannot decode the provided ASN.1 element as an octet " +
-                    "string element because the provided element was null.");
+                    "string element because the provided element was null");
     registerMessage(MSGID_ASN1_OCTET_STRING_DECODE_ARRAY_NULL,
                     "Cannot decode the provided byte array as an ASN.1 octet " +
-                    "string element because the array was null.");
+                    "string element because the array was null");
 
 
     registerMessage(MSGID_ASN1_INTEGER_SET_VALUE_NULL,
                     "Cannot decode the provided byte array as the value of " +
-                    "an ASN.1 integer element because the array was null.");
+                    "an ASN.1 integer element because the array was null");
     registerMessage(MSGID_ASN1_INTEGER_SET_VALUE_INVALID_LENGTH,
                     "Cannot decode the provided byte array as the value of " +
                     "an ASN.1 integer element because the array did not have " +
-                    "a length between 1 and 4 bytes (provided length was %d).");
+                    "a length between 1 and 4 bytes (provided length was %d)");
     registerMessage(MSGID_ASN1_INTEGER_DECODE_ELEMENT_NULL,
                     "Cannot decode the provided ASN.1 element as an integer " +
-                    "element because the provided element was null.");
+                    "element because the provided element was null");
     registerMessage(MSGID_ASN1_INTEGER_DECODE_ELEMENT_INVALID_LENGTH,
                     "Cannot decode the provided ASN.1 element as an integer " +
                     "element because the length of the element value was not " +
-                    "between one and four bytes (actual length was %d).");
+                    "between one and four bytes (actual length was %d)");
     registerMessage(MSGID_ASN1_INTEGER_DECODE_ARRAY_NULL,
                     "Cannot decode the provided byte array as an ASN.1 " +
-                    "integer element because the array was null.");
+                    "integer element because the array was null");
     registerMessage(MSGID_ASN1_INTEGER_SHORT_ELEMENT,
                     "Cannot decode the provided byte array as an ASN.1 " +
                     "integer element because the length of the array (%d " +
                     "bytes) is less than the minimum required for an integer " +
-                    "element (3 bytes).");
+                    "element (3 bytes)");
     registerMessage(MSGID_ASN1_INTEGER_DECODE_ARRAY_INVALID_LENGTH,
                     "Cannot decode the provided byte array as an ASN.1 " +
                     "integer element because the decoded value length was " +
-                    "not between 1 and 4 bytes (decoded length was %d).");
+                    "not between 1 and 4 bytes (decoded length was %d)");
 
 
     registerMessage(MSGID_ASN1_LONG_SET_VALUE_INVALID_LENGTH,
                     "Cannot decode the provided byte array as the value of " +
                     "an ASN.1 long element because the array did not have " +
-                    "a length between 1 and 8 bytes (provided length was %d).");
+                    "a length between 1 and 8 bytes (provided length was %d)");
     registerMessage(MSGID_ASN1_LONG_DECODE_ELEMENT_INVALID_LENGTH,
                     "Cannot decode the provided ASN.1 element as a long " +
                     "element because the length of the element value was not " +
-                    "between one and eight bytes (actual length was %d).");
+                    "between one and eight bytes (actual length was %d)");
     registerMessage(MSGID_ASN1_LONG_DECODE_ARRAY_INVALID_LENGTH,
                     "Cannot decode the provided byte array as an ASN.1 " +
                     "long element because the decoded value length was " +
-                    "not between 1 and 8 bytes (decoded length was %d).");
+                    "not between 1 and 8 bytes (decoded length was %d)");
 
 
     registerMessage(MSGID_ASN1_ENUMERATED_SET_VALUE_NULL,
                     "Cannot decode the provided byte array as the value of " +
-                    "an ASN.1 enumerated element because the array was null.");
+                    "an ASN.1 enumerated element because the array was null");
     registerMessage(MSGID_ASN1_ENUMERATED_SET_VALUE_INVALID_LENGTH,
                     "Cannot decode the provided byte array as the value of " +
                     "an ASN.1 enumerated element because the array did not " +
                     "have a length between 1 and 4 bytes (provided length " +
-                    "was %d).");
+                    "was %d)");
     registerMessage(MSGID_ASN1_ENUMERATED_DECODE_ELEMENT_NULL,
                     "Cannot decode the provided ASN.1 element as an " +
                     "enumerated element because the provided element was " +
-                    "null.");
+                    "null");
     registerMessage(MSGID_ASN1_ENUMERATED_DECODE_ELEMENT_INVALID_LENGTH,
                     "Cannot decode the provided ASN.1 element as an " +
                     "enumerated element because the length of the element " +
                     "value was not between one and four bytes (actual length " +
-                    "was %d).");
+                    "was %d)");
     registerMessage(MSGID_ASN1_ENUMERATED_DECODE_ARRAY_NULL,
                     "Cannot decode the provided byte array as an ASN.1 " +
-                    "enumerated element because the array was null.");
+                    "enumerated element because the array was null");
     registerMessage(MSGID_ASN1_ENUMERATED_SHORT_ELEMENT,
                     "Cannot decode the provided byte array as an ASN.1 " +
                     "enumerated element because the length of the array (%d " +
                     "bytes) is less than the minimum required for an " +
-                    "enumerated element (3 bytes).");
+                    "enumerated element (3 bytes)");
     registerMessage(MSGID_ASN1_ENUMERATED_DECODE_ARRAY_INVALID_LENGTH,
                     "Cannot decode the provided byte array as an ASN.1 " +
                     "enumerated element because the decoded value length was " +
-                    "not between 1 and 4 bytes (decoded length was %d).");
+                    "not between 1 and 4 bytes (decoded length was %d)");
 
 
     registerMessage(MSGID_ASN1_SEQUENCE_SET_VALUE_NULL,
                     "Cannot decode the provided byte array as the value of " +
-                    "an ASN.1 sequence element because the array was null.");
+                    "an ASN.1 sequence element because the array was null");
     registerMessage(MSGID_ASN1_SEQUENCE_DECODE_ELEMENT_NULL,
                     "Cannot decode the provided ASN.1 element as a sequence " +
-                    "element because the provided element was null.");
+                    "element because the provided element was null");
     registerMessage(MSGID_ASN1_SEQUENCE_DECODE_ARRAY_NULL,
                     "Cannot decode the provided byte array as an ASN.1 " +
-                    "sequence element because the array was null.");
+                    "sequence element because the array was null");
 
 
     registerMessage(MSGID_ASN1_SET_SET_VALUE_NULL,
                     "Cannot decode the provided byte array as the value of " +
-                    "an ASN.1 set element because the array was null.");
+                    "an ASN.1 set element because the array was null");
     registerMessage(MSGID_ASN1_SET_DECODE_ELEMENT_NULL,
                     "Cannot decode the provided ASN.1 element as a set " +
-                    "element because the provided element was null.");
+                    "element because the provided element was null");
     registerMessage(MSGID_ASN1_SET_DECODE_ARRAY_NULL,
                     "Cannot decode the provided byte array as an ASN.1 set " +
-                    "element because the array was null.");
+                    "element because the array was null");
 
 
     registerMessage(MSGID_ASN1_READER_MAX_SIZE_EXCEEDED,
@@ -4594,580 +4594,580 @@
                     "because the decoded element length of %d bytes was " +
                     "larger than the maximum allowed element length of %d " +
                     "bytes.  The underlying input stream has been closed " +
-                    "and this reader may no longer be used.");
+                    "and this reader may no longer be used");
 
 
     registerMessage(MSGID_LDAP_MESSAGE_DECODE_NULL,
                     "Cannot decode the provided ASN.1 sequence as an LDAP " +
-                    "message because the sequence was null.");
+                    "message because the sequence was null");
     registerMessage(MSGID_LDAP_MESSAGE_DECODE_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided ASN.1 sequence as an LDAP " +
                     "message because the sequence contained an invalid " +
-                    "number of elements (expected 2 or 3, got %d).");
+                    "number of elements (expected 2 or 3, got %d)");
     registerMessage(MSGID_LDAP_MESSAGE_DECODE_MESSAGE_ID,
                     "Cannot decode the provided ASN.1 sequence as an LDAP " +
                     "message because the first element of the sequence " +
-                    "could not be decoded as an integer message ID:  %s.");
+                    "could not be decoded as an integer message ID:  %s");
     registerMessage(MSGID_LDAP_MESSAGE_DECODE_PROTOCOL_OP,
                     "Cannot decode the provided ASN.1 sequence as an LDAP " +
                     "message because the second element of the sequence " +
-                    "could not be decoded as the protocol op:  %s.");
+                    "could not be decoded as the protocol op:  %s");
     registerMessage(MSGID_LDAP_MESSAGE_DECODE_CONTROLS,
                     "Cannot decode the provided ASN.1 sequence as an LDAP " +
                     "message because the third element of the sequence " +
-                    "could not be decoded as the set of controls:  %s.");
+                    "could not be decoded as the set of controls:  %s");
 
 
     registerMessage(MSGID_LDAP_CONTROL_DECODE_NULL,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
-                    "control because the element was null.");
+                    "control because the element was null");
     registerMessage(MSGID_LDAP_CONTROL_DECODE_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "control because the element could not be decoded as a " +
-                    "sequence:  %s.");
+                    "sequence:  %s");
     registerMessage(MSGID_LDAP_CONTROL_DECODE_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "control because the control sequence contained an " +
-                    "invalid number of elements (expected 1 to 3, got %d).");
+                    "invalid number of elements (expected 1 to 3, got %d)");
     registerMessage(MSGID_LDAP_CONTROL_DECODE_OID,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "control because the OID could not be decoded as a " +
-                    "string:  %s.");
+                    "string:  %s");
     registerMessage(MSGID_LDAP_CONTROL_DECODE_CRITICALITY,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "control because the criticality could not be decoded as " +
-                    "Boolean value:  %s.");
+                    "Boolean value:  %s");
     registerMessage(MSGID_LDAP_CONTROL_DECODE_VALUE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "control because the value could not be decoded as an " +
-                    "octet string:  %s.");
+                    "octet string:  %s");
     registerMessage(MSGID_LDAP_CONTROL_DECODE_INVALID_TYPE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "control because the BER type for the second element " +
-                    "in the sequence was invalid (expected 01 or 04, got %x).");
+                    "in the sequence was invalid (expected 01 or 04, got %x)");
     registerMessage(MSGID_LDAP_CONTROL_DECODE_CONTROLS_NULL,
                     "Cannot decode the provided ASN.1 element as a set of " +
-                    "LDAP controls because the element was null.");
+                    "LDAP controls because the element was null");
     registerMessage(MSGID_LDAP_CONTROL_DECODE_CONTROLS_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as a set of " +
                     "LDAP controls because the element could not be decoded " +
-                    "as a sequence:  %s.");
+                    "as a sequence:  %s");
 
 
     registerMessage(MSGID_LDAP_ABANDON_REQUEST_DECODE_ID,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "abandon request protocol op because a problem occurred " +
                     "while trying to obtain the message ID of the operation " +
-                    "to abandon:  %s.");
+                    "to abandon:  %s");
     registerMessage(MSGID_LDAP_ABANDON_INVALID_MESSAGE_TYPE,
                     "Cannot convert the provided LDAP message (%s) to an " +
-                    "abandon operation:  %s.");
+                    "abandon operation:  %s");
 
 
     registerMessage(MSGID_LDAP_RESULT_DECODE_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "result protocol op because a problem occurred while " +
-                    "trying to parse the result sequence:  %s.");
+                    "trying to parse the result sequence:  %s");
     registerMessage(MSGID_LDAP_RESULT_DECODE_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "result protocol op because the result sequence did not " +
                     "contain a valid number of elements (expected 3 or 4, " +
-                    "got %d).");
+                    "got %d)");
     registerMessage(MSGID_LDAP_RESULT_DECODE_RESULT_CODE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "result protocol op because the first element in the " +
                     "result sequence could not be decoded as an integer " +
-                    "result code:  %s.");
+                    "result code:  %s");
     registerMessage(MSGID_LDAP_RESULT_DECODE_MATCHED_DN,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "result protocol op because the second element in the " +
                     "result sequence could not be decoded as the matched " +
-                    "DN:  %s.");
+                    "DN:  %s");
     registerMessage(MSGID_LDAP_RESULT_DECODE_ERROR_MESSAGE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "result protocol op because the third element in the " +
                     "result sequence could not be decoded as the error " +
-                    "message:  %s.");
+                    "message:  %s");
     registerMessage(MSGID_LDAP_RESULT_DECODE_REFERRALS,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "result protocol op because the fourth element in the " +
                     "result sequence could not be decoded as a set of " +
-                    "referral URLs:  %s.");
+                    "referral URLs:  %s");
 
 
     registerMessage(MSGID_LDAP_BIND_RESULT_DECODE_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "bind response protocol op because the result sequence " +
                     "did not contain a valid number of elements (expected 3 " +
-                    "to 5, got %d).");
+                    "to 5, got %d)");
     registerMessage(MSGID_LDAP_BIND_RESULT_DECODE_SERVER_SASL_CREDENTIALS,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "bind response protocol op because the final element in " +
                     "the result sequence could not be decoded as the server " +
-                    "SASL credentials:  %s.");
+                    "SASL credentials:  %s");
     registerMessage(MSGID_LDAP_BIND_RESULT_DECODE_INVALID_TYPE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "bind response protocol op because the BER type for the " +
                     "fourth element in the sequence was invalid (expected A3 " +
-                    "or 87, got %x).");
+                    "or 87, got %x)");
 
 
     registerMessage(MSGID_LDAP_EXTENDED_RESULT_DECODE_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "bind response protocol op because the result sequence " +
                     "did not contain a valid number of elements (expected 3 " +
-                    "to 6, got %d).");
+                    "to 6, got %d)");
     registerMessage(MSGID_LDAP_EXTENDED_RESULT_DECODE_REFERRALS,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "bind response protocol op because the set of referral " +
-                    "URLs could not be decoded:  %s.");
+                    "URLs could not be decoded:  %s");
     registerMessage(MSGID_LDAP_EXTENDED_RESULT_DECODE_OID,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "bind response protocol op because the response OID " +
-                    "could not be decoded:  %s.");
+                    "could not be decoded:  %s");
     registerMessage(MSGID_LDAP_EXTENDED_RESULT_DECODE_VALUE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "bind response protocol op because the response value " +
-                    "could not be decoded:  %s.");
+                    "could not be decoded:  %s");
     registerMessage(MSGID_LDAP_EXTENDED_RESULT_DECODE_INVALID_TYPE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "extended response protocol op because one of the " +
                     "elements it contained had an invalid BER type (expected " +
-                    "A3, 8A, or 8B, got %x).");
+                    "A3, 8A, or 8B, got %x)");
 
 
     registerMessage(MSGID_LDAP_UNBIND_DECODE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
-                    "unbind request protocol op:  %s.");
+                    "unbind request protocol op:  %s");
     registerMessage(MSGID_LDAP_UNBIND_INVALID_MESSAGE_TYPE,
                     "Cannot convert the provided LDAP message (%s) to an " +
-                    "unbind operation:  %s.");
+                    "unbind operation:  %s");
 
 
     registerMessage(MSGID_LDAP_BIND_REQUEST_DECODE_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "bind request protocol op because the element could " +
-                    "not be decoded as a sequence:  %s.");
+                    "not be decoded as a sequence:  %s");
     registerMessage(MSGID_LDAP_BIND_REQUEST_DECODE_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "bind request protocol op because the request sequence " +
-                    "had an invalid number of elements (expected 3, got %d).");
+                    "had an invalid number of elements (expected 3, got %d)");
     registerMessage(MSGID_LDAP_BIND_REQUEST_DECODE_VERSION,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "bind request protocol op because the protocol " +
-                    "version could not be decoded as an integer:  %s.");
+                    "version could not be decoded as an integer:  %s");
     registerMessage(MSGID_LDAP_BIND_REQUEST_DECODE_DN,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "bind request protocol op because the bind DN could not " +
-                    "be properly decoded:  %s.");
+                    "be properly decoded:  %s");
     registerMessage(MSGID_LDAP_BIND_REQUEST_DECODE_PASSWORD,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "bind request protocol op because the password to use " +
-                    "for simple authentication could not be decoded:  %s.");
+                    "for simple authentication could not be decoded:  %s");
     registerMessage(MSGID_LDAP_BIND_REQUEST_DECODE_SASL_INFO,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "bind request protocol op because the SASL " +
-                    "authentication information could not be decoded:  %s.");
+                    "authentication information could not be decoded:  %s");
     registerMessage(MSGID_LDAP_BIND_REQUEST_DECODE_INVALID_CRED_TYPE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "bind request protocol op because the authentication " +
                     "info element had an invalid BER type (expected 80 or " +
-                    "A3, got %x).");
+                    "A3, got %x)");
     registerMessage(MSGID_LDAP_BIND_REQUEST_DECODE_CREDENTIALS,
                     "Cannot decoded the provided ASN.1 element as an LDAP " +
                     "bind request protocol op because an unexpected error " +
                     "occurred while trying to decode the authentication " +
-                    "info element:  %s.");
+                    "info element:  %s");
 
 
     registerMessage(MSGID_LDAP_COMPARE_REQUEST_DECODE_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "compare request protocol op because the element could " +
-                    "not be decoded as a sequence:  %s.");
+                    "not be decoded as a sequence:  %s");
     registerMessage(MSGID_LDAP_COMPARE_REQUEST_DECODE_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "compare request protocol op because the request " +
                     "sequence had an invalid number of elements (expected 2, " +
-                    "got %d).");
+                    "got %d)");
     registerMessage(MSGID_LDAP_COMPARE_REQUEST_DECODE_DN,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "compare request protocol op because the target DN could " +
-                    "not be properly decoded:  %s.");
+                    "not be properly decoded:  %s");
     registerMessage(MSGID_LDAP_COMPARE_REQUEST_DECODE_AVA,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "compare request protocol op because the attribute value " +
-                    "assertion could not be decoded as a sequence:  %s.");
+                    "assertion could not be decoded as a sequence:  %s");
     registerMessage(MSGID_LDAP_COMPARE_REQUEST_DECODE_AVA_COUNT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "compare request protocol op because the attribute value " +
                     "assertion sequence had an invalid number of elements " +
-                    "(expected 2, got %d).");
+                    "(expected 2, got %d)");
     registerMessage(MSGID_LDAP_COMPARE_REQUEST_DECODE_TYPE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "compare request protocol op because the attribute type " +
-                    "could not be properly decoded:  %s.");
+                    "could not be properly decoded:  %s");
     registerMessage(MSGID_LDAP_COMPARE_REQUEST_DECODE_VALUE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "compare request protocol op because the assertion value " +
-                    "could not be properly decoded:  %s.");
+                    "could not be properly decoded:  %s");
 
 
     registerMessage(MSGID_LDAP_DELETE_REQUEST_DECODE_DN,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "delete request protocol op because the target DN could " +
-                    "not be properly decoded:  %s.");
+                    "not be properly decoded:  %s");
 
 
     registerMessage(MSGID_LDAP_EXTENDED_REQUEST_DECODE_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "extended request protocol op because the element could " +
-                    "not be decoded as a sequence:  %s.");
+                    "not be decoded as a sequence:  %s");
     registerMessage(MSGID_LDAP_EXTENDED_REQUEST_DECODE_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "extended request protocol op because the request " +
                     "sequence had an invalid number of elements (expected 1 " +
-                    "or 2, got %d).");
+                    "or 2, got %d)");
     registerMessage(MSGID_LDAP_EXTENDED_REQUEST_DECODE_OID,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "extended request protocol op because the OID could not " +
-                    "be properly decoded:  %s.");
+                    "be properly decoded:  %s");
     registerMessage(MSGID_LDAP_EXTENDED_REQUEST_DECODE_VALUE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "extended request protocol op because the value could " +
-                    "not be properly decoded:  %s.");
+                    "not be properly decoded:  %s");
 
 
     registerMessage(MSGID_LDAP_MODIFY_DN_REQUEST_DECODE_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "modify DN request protocol op because the element could " +
-                    "not be decoded as a sequence:  %s.");
+                    "not be decoded as a sequence:  %s");
     registerMessage(MSGID_LDAP_MODIFY_DN_REQUEST_DECODE_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "modify DN request protocol op because the request " +
                     "sequence had an invalid number of elements (expected 3 " +
-                    "or 4, got %d).");
+                    "or 4, got %d)");
     registerMessage(MSGID_LDAP_MODIFY_DN_REQUEST_DECODE_DN,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "modify DN request protocol op because the entry DN " +
-                    "could not be properly decoded:  %s.");
+                    "could not be properly decoded:  %s");
     registerMessage(MSGID_LDAP_MODIFY_DN_REQUEST_DECODE_NEW_RDN,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "modify DN request protocol op because the new RDN could " +
-                    "not be properly decoded:  %s.");
+                    "not be properly decoded:  %s");
     registerMessage(MSGID_LDAP_MODIFY_DN_REQUEST_DECODE_DELETE_OLD_RDN,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "modify DN request protocol op because the deleteOldRDN " +
-                    "flag could not be properly decoded:  %s.");
+                    "flag could not be properly decoded:  %s");
     registerMessage(MSGID_LDAP_MODIFY_DN_REQUEST_DECODE_NEW_SUPERIOR,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "modify DN request protocol op because the new superior " +
-                    "DN could not be properly decoded:  %s.");
+                    "DN could not be properly decoded:  %s");
 
 
     registerMessage(MSGID_LDAP_ATTRIBUTE_DECODE_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "attribute because the element could not be decoded as a " +
-                    "sequence:  %s.");
+                    "sequence:  %s");
     registerMessage(MSGID_LDAP_ATTRIBUTE_DECODE_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "attribute because the request sequence had an invalid " +
-                    "number of elements (expected 2, got %d).");
+                    "number of elements (expected 2, got %d)");
     registerMessage(MSGID_LDAP_ATTRIBUTE_DECODE_TYPE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "attribute because the attribute type could not be " +
-                    "decoded:  %s.");
+                    "decoded:  %s");
     registerMessage(MSGID_LDAP_ATTRIBUTE_DECODE_VALUES,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "attribute because the set of values could not be " +
-                    "decoded:  %s.");
+                    "decoded:  %s");
     registerMessage(MSGID_LDAP_ATTRIBUTE_DUPLICATE_VALUES,
                     "The provided LDAP attribute %s contains duplicate " +
-                    "values.");
+                    "values");
 
 
     registerMessage(MSGID_LDAP_ADD_REQUEST_DECODE_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as an LDAP add " +
                     "request protocol op because the element could not be " +
-                    "decoded as a sequence:  %s.");
+                    "decoded as a sequence:  %s");
     registerMessage(MSGID_LDAP_ADD_REQUEST_DECODE_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided ASN.1 element as an LDAP add " +
                     "request protocol op because the request sequence had an " +
-                    "invalid number of elements (expected 2, got %d).");
+                    "invalid number of elements (expected 2, got %d)");
     registerMessage(MSGID_LDAP_ADD_REQUEST_DECODE_DN,
                     "Cannot decode the provided ASN.1 element as an LDAP add " +
                     "request protocol op because the entry DN could not be " +
-                    "decoded:  %s.");
+                    "decoded:  %s");
     registerMessage(MSGID_LDAP_ADD_REQUEST_DECODE_ATTRS,
                     "Cannot decode the provided ASN.1 element as an LDAP add " +
                     "request protocol op because the set of attributes could " +
-                    "not be decoded:  %s.");
+                    "not be decoded:  %s");
 
 
     registerMessage(MSGID_LDAP_MODIFICATION_DECODE_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "modification because the element could not be decoded " +
-                    "as a sequence:  %s.");
+                    "as a sequence:  %s");
     registerMessage(MSGID_LDAP_MODIFICATION_DECODE_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "modification because the request sequence had an " +
-                    "invalid number of elements (expected 2, got %d).");
+                    "invalid number of elements (expected 2, got %d)");
     registerMessage(MSGID_LDAP_MODIFICATION_DECODE_INVALID_MOD_TYPE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "modification because it contained an invalid " +
-                    "modification type (%d).");
+                    "modification type (%d)");
     registerMessage(MSGID_LDAP_MODIFICATION_DECODE_MOD_TYPE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "modification because the modification type could not be " +
-                    "decoded:  %s.");
+                    "decoded:  %s");
     registerMessage(MSGID_LDAP_MODIFICATION_DECODE_ATTR,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "modification because the attribute could not be " +
-                    "decoded:  %s.");
+                    "decoded:  %s");
 
 
     registerMessage(MSGID_LDAP_MODIFY_REQUEST_DECODE_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "modify request protocol op because the element could " +
-                    "not be decoded as a sequence:  %s.");
+                    "not be decoded as a sequence:  %s");
     registerMessage(MSGID_LDAP_MODIFY_REQUEST_DECODE_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "modify request protocol op because the request sequence " +
-                    "had an invalid number of elements (expected 2, got %d).");
+                    "had an invalid number of elements (expected 2, got %d)");
     registerMessage(MSGID_LDAP_MODIFY_REQUEST_DECODE_DN,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "modify request protocol op because the entry DN could " +
-                    "not be decoded:  %s.");
+                    "not be decoded:  %s");
     registerMessage(MSGID_LDAP_MODIFY_REQUEST_DECODE_MODS,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "modify request protocol op because the set of " +
-                    "modifications could not be decoded:  %s.");
+                    "modifications could not be decoded:  %s");
 
 
     registerMessage(MSGID_LDAP_SEARCH_ENTRY_DECODE_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search result entry protocol op because the element " +
-                    "could not be decoded as a sequence:  %s.");
+                    "could not be decoded as a sequence:  %s");
     registerMessage(MSGID_LDAP_SEARCH_ENTRY_DECODE_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search result entry protocol op because the request " +
                     "sequence had an invalid number of elements (expected 2, " +
-                    "got %d).");
+                    "got %d)");
     registerMessage(MSGID_LDAP_SEARCH_ENTRY_DECODE_DN,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search result entry protocol op because the entry DN " +
-                    "could not be decoded:  %s.");
+                    "could not be decoded:  %s");
     registerMessage(MSGID_LDAP_SEARCH_ENTRY_DECODE_ATTRS,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search result entry protocol op because the set of " +
-                    "attributes could not be decoded:  %s.");
+                    "attributes could not be decoded:  %s");
 
 
     registerMessage(MSGID_LDAP_SEARCH_REFERENCE_DECODE_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search result reference protocol op because the " +
-                    "element could not be decoded as a sequence:  %s.");
+                    "element could not be decoded as a sequence:  %s");
     registerMessage(MSGID_LDAP_SEARCH_REFERENCE_DECODE_URLS,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search result reference protocol op because a problem " +
                     "occurred while trying to decode the sequence elements " +
-                    "as referral URLs:  %s.");
+                    "as referral URLs:  %s");
 
 
     registerMessage(MSGID_LDAP_SEARCH_REQUEST_DECODE_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search request protocol op because the element could " +
-                    "not be decoded as a sequence:  %s.");
+                    "not be decoded as a sequence:  %s");
     registerMessage(MSGID_LDAP_SEARCH_REQUEST_DECODE_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search request protocol op because the request sequence " +
-                    "had an invalid number of elements (expected 8, got %d).");
+                    "had an invalid number of elements (expected 8, got %d)");
     registerMessage(MSGID_LDAP_SEARCH_REQUEST_DECODE_BASE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search request protocol op because the base DN could " +
-                    "not be decoded:  %s.");
+                    "not be decoded:  %s");
     registerMessage(MSGID_LDAP_SEARCH_REQUEST_DECODE_INVALID_SCOPE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search request protocol op because the provided scope " +
-                    "value (%d) is invalid.");
+                    "value (%d) is invalid");
     registerMessage(MSGID_LDAP_SEARCH_REQUEST_DECODE_SCOPE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search request protocol op because the scope could not " +
-                    "be decoded:  %s.");
+                    "be decoded:  %s");
     registerMessage(MSGID_LDAP_SEARCH_REQUEST_DECODE_INVALID_DEREF,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search request protocol op because the provided alias " +
-                    "dereferencing policy value (%d) is invalid.");
+                    "dereferencing policy value (%d) is invalid");
     registerMessage(MSGID_LDAP_SEARCH_REQUEST_DECODE_DEREF,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search request protocol op because the alias " +
-                    "dereferencing policy could not be decoded:  %s.");
+                    "dereferencing policy could not be decoded:  %s");
     registerMessage(MSGID_LDAP_SEARCH_REQUEST_DECODE_SIZE_LIMIT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search request protocol op because the size limit could " +
-                    "not be decoded:  %s.");
+                    "not be decoded:  %s");
     registerMessage(MSGID_LDAP_SEARCH_REQUEST_DECODE_TIME_LIMIT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search request protocol op because the time limit could " +
-                    "not be decoded:  %s.");
+                    "not be decoded:  %s");
     registerMessage(MSGID_LDAP_SEARCH_REQUEST_DECODE_TYPES_ONLY,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search request protocol op because the typesOnly flag " +
-                    "could not be decoded:  %s.");
+                    "could not be decoded:  %s");
     registerMessage(MSGID_LDAP_SEARCH_REQUEST_DECODE_FILTER,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search request protocol op because the filter could not " +
-                    "be decoded:  %s.");
+                    "be decoded:  %s");
     registerMessage(MSGID_LDAP_SEARCH_REQUEST_DECODE_ATTRIBUTES,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search request protocol op because the requested " +
-                    "attribute set could not be decoded:  %s.");
+                    "attribute set could not be decoded:  %s");
 
 
     registerMessage(MSGID_LDAP_PROTOCOL_OP_DECODE_NULL,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
-                    "protocol op because the element was null.");
+                    "protocol op because the element was null");
     registerMessage(MSGID_LDAP_PROTOCOL_OP_DECODE_INVALID_TYPE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "protocol op because the element had an invalid BER " +
-                    "type (%x) for an LDAP protocol op.");
+                    "type (%x) for an LDAP protocol op");
 
 
     registerMessage(MSGID_LDAP_FILTER_DECODE_NULL,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
-                    "search filter because the element was null.");
+                    "search filter because the element was null");
     registerMessage(MSGID_LDAP_FILTER_DECODE_INVALID_TYPE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because the element had an invalid BER " +
-                    "type (%x) for a search filter.");
+                    "type (%x) for a search filter");
     registerMessage(MSGID_LDAP_FILTER_DECODE_COMPOUND_SET,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because the compound filter set could " +
-                    "not be decoded:  %s.");
+                    "not be decoded:  %s");
     registerMessage(MSGID_LDAP_FILTER_DECODE_COMPOUND_COMPONENTS,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because an unexpected error occurred " +
                     "while trying to decode one of the compound filter " +
-                    "components.");
+                    "components");
     registerMessage(MSGID_LDAP_FILTER_DECODE_NOT_ELEMENT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because the value of the element cannot " +
                     "itself be decoded as an ASN.1 element for a NOT filter " +
-                    "component:  %s.");
+                    "component:  %s");
     registerMessage(MSGID_LDAP_FILTER_DECODE_NOT_COMPONENT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because the NOT component element could " +
-                    "not be decoded as an LDAP filter:  %s.");
+                    "not be decoded as an LDAP filter:  %s");
     registerMessage(MSGID_LDAP_FILTER_DECODE_TV_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because the element could not be decoded " +
-                    "as a type-and-value sequence:  %s.");
+                    "as a type-and-value sequence:  %s");
     registerMessage(MSGID_LDAP_FILTER_DECODE_TV_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because the type-and-value sequence had " +
-                    "an invalid number of elements (expected 2, got %d).");
+                    "an invalid number of elements (expected 2, got %d)");
     registerMessage(MSGID_LDAP_FILTER_DECODE_TV_TYPE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because the attribute type could not be " +
-                    "decoded from the type-and-value sequence:  %s.");
+                    "decoded from the type-and-value sequence:  %s");
     registerMessage(MSGID_LDAP_FILTER_DECODE_TV_VALUE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because the assertion value could not be " +
-                    "decoded from the type-and-value sequence:  %s.");
+                    "decoded from the type-and-value sequence:  %s");
     registerMessage(MSGID_LDAP_FILTER_DECODE_SUBSTRING_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because the element could not be decoded " +
-                    "as a substring sequence:  %s.");
+                    "as a substring sequence:  %s");
     registerMessage(MSGID_LDAP_FILTER_DECODE_SUBSTRING_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because the substring sequence had an " +
-                    "invalid number of elements (expected 2, got %d).");
+                    "invalid number of elements (expected 2, got %d)");
     registerMessage(MSGID_LDAP_FILTER_DECODE_SUBSTRING_TYPE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because the attribute type could not be " +
-                    "decoded from the substring sequence:  %s.");
+                    "decoded from the substring sequence:  %s");
     registerMessage(MSGID_LDAP_FILTER_DECODE_SUBSTRING_ELEMENTS,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because the substring value sequence " +
-                    "could not be decoded:  %s.");
+                    "could not be decoded:  %s");
     registerMessage(MSGID_LDAP_FILTER_DECODE_SUBSTRING_NO_SUBELEMENTS,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because the substring value sequence did " +
-                    "not contain any elements.");
+                    "not contain any elements");
     registerMessage(MSGID_LDAP_FILTER_DECODE_SUBSTRING_INVALID_SUBTYPE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because the substring value sequence had " +
-                    "an element with an invalid BER type (%x).");
+                    "an element with an invalid BER type (%x)");
     registerMessage(MSGID_LDAP_FILTER_DECODE_SUBSTRING_VALUES,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because a problem occurred while trying " +
-                    "to parse the substring value elements:  %s.");
+                    "to parse the substring value elements:  %s");
     registerMessage(MSGID_LDAP_FILTER_DECODE_PRESENCE_TYPE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because the element could not be decoded " +
-                    "as the presence attribute type:  %s.");
+                    "as the presence attribute type:  %s");
     registerMessage(MSGID_LDAP_FILTER_DECODE_EXTENSIBLE_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because the element could not be decoded " +
-                    "as an extensible matching sequence:  %s.");
+                    "as an extensible matching sequence:  %s");
     registerMessage(MSGID_LDAP_FILTER_DECODE_EXTENSIBLE_INVALID_TYPE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because the extensible matching sequence " +
-                    "had an element with an invalid BER type (%x).");
+                    "had an element with an invalid BER type (%x)");
     registerMessage(MSGID_LDAP_FILTER_DECODE_EXTENSIBLE_ELEMENTS,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "search filter because a problem occurred while trying " +
-                    "to parse the extensible match sequence elements:  %s.");
+                    "to parse the extensible match sequence elements:  %s");
     registerMessage(MSGID_LDAP_FILTER_UNKNOWN_MATCHING_RULE,
                     "The provided LDAP search filter references unknown " +
-                    "matching rule %s.");
+                    "matching rule %s");
     registerMessage(MSGID_LDAP_FILTER_VALUE_WITH_NO_ATTR_OR_MR,
                     "The provided LDAP search filter has an assertion value " +
                     "but does not include either an attribute type or a " +
-                    "matching rule ID.");
+                    "matching rule ID");
     registerMessage(MSGID_LDAP_FILTER_STRING_NULL,
                     "Cannot decode the provided string as an LDAP search " +
-                    "filter because the string was null.");
+                    "filter because the string was null");
     registerMessage(MSGID_LDAP_FILTER_UNCAUGHT_EXCEPTION,
                     "Cannot decode the provided string %s as an LDAP search " +
                     "filter because an unexpected exception was thrown " +
-                    "during processing:  %s.");
+                    "during processing:  %s");
     registerMessage(MSGID_LDAP_FILTER_MISMATCHED_PARENTHESES,
                     "The provided search filter \"%s\" had mismatched " +
                     "parentheses around the portion between positions %d and " +
-                    "%d.");
+                    "%d");
     registerMessage(MSGID_LDAP_FILTER_NO_EQUAL_SIGN,
                     "The provided search filter \"%s\" was missing an equal " +
                     "sign in the suspected simple filter component between " +
-                    "positions %d and %d.");
+                    "positions %d and %d");
     registerMessage(MSGID_LDAP_FILTER_INVALID_ESCAPED_BYTE,
                     "The provided search filter \"%s\" had an invalid " +
                     "escaped byte value at position %d.  A backslash in a " +
                     "value must be followed by two hexadecimal characters " +
-                    "that define the byte that has been encoded.");
+                    "that define the byte that has been encoded");
     registerMessage(MSGID_LDAP_FILTER_COMPOUND_MISSING_PARENTHESES,
                     "The provided search filter \"%s\" could not be decoded " +
                     "because the compound filter between positions %d and %d " +
                     "did not start with an open parenthesis and end with a " +
                     "close parenthesis (they may be parentheses for " +
-                    "different filter components).");
+                    "different filter components)");
     registerMessage(MSGID_LDAP_FILTER_NO_CORRESPONDING_OPEN_PARENTHESIS,
                     "The provided search filter \"%s\" could not be decoded " +
                     "because the closing parenthesis at position %d did not " +
-                    "have a corresponding open parenthesis.");
+                    "have a corresponding open parenthesis");
     registerMessage(MSGID_LDAP_FILTER_NO_CORRESPONDING_CLOSE_PARENTHESIS,
                     "The provided search filter \"%s\" could not be decoded " +
                     "because the closing parenthesis at position %d did not " +
-                    "have a corresponding close parenthesis.");
+                    "have a corresponding close parenthesis");
     registerMessage(MSGID_LDAP_FILTER_SUBSTRING_NO_ASTERISKS,
                     "The provided search filter \"%s\" could not be decoded " +
                     "because the assumed substring filter value between " +
                     "positions %d and %d did not have any asterisk wildcard " +
-                    "characters.");
+                    "characters");
     registerMessage(MSGID_LDAP_FILTER_EXTENSIBLE_MATCH_NO_COLON,
                     "The provided search filter \"%s\" could not be decoded " +
                     "because the extensible match component starting at " +
                     "position %d did not have a colon to denote the end of " +
-                    "the attribute type name.");
+                    "the attribute type name");
 
 
     registerMessage(MSGID_LDAP_CLIENT_SEND_RESPONSE_NO_RESULT_CODE,
@@ -5176,127 +5176,127 @@
                     "have a result code.  This could indicate that the " +
                     "operation did not complete properly or that it is one " +
                     "that is not allowed to have a response.  Using a " +
-                    "generic 'Operations Error' response.");
+                    "generic 'Operations Error' response");
     registerMessage(MSGID_LDAP_CLIENT_SEND_RESPONSE_INVALID_OP,
                     "The server attempted to send a response to the %s " +
                     "operation (conn=%d, op=%d), but this type of operation " +
-                    "is not allowed to have responses.  Backtrace:  %s.");
+                    "is not allowed to have responses.  Backtrace:  %s");
     registerMessage(MSGID_LDAP_CLIENT_SEND_MESSAGE_ENCODE_ASN1,
                     "The server was unable to encode the provided LDAP " +
-                    "message %s (conn=%d, op=%d) into an ASN.1 element:  %s.");
+                    "message %s (conn=%d, op=%d) into an ASN.1 element:  %s");
     registerMessage(MSGID_LDAP_CLIENT_SEND_MESSAGE_ENCODE_BYTES,
                     "The server was unable to encode the ASN.1 element " +
                     "generated from LDAP message %s (conn=%d, op=%d) into a " +
-                    "byte array:  %s.");
+                    "byte array:  %s");
     registerMessage(MSGID_LDAP_CLIENT_SEND_MESSAGE_IO_PROBLEM,
                     "The server was unable to send the LDAP message %s " +
                     "(conn=%d, op=%d) to the client because an I/O problem " +
-                    "was encountered:  %s.");
+                    "was encountered:  %s");
     registerMessage(MSGID_LDAP_CLIENT_SEND_MESSAGE_UNEXPECTED_PROBLEM,
                     "The server was unable to send the LDAP message %s " +
                     "(conn=%d, op=%d) to the client because an unexpected " +
-                    "problem was encountered:  %s.");
+                    "problem was encountered:  %s");
     registerMessage(MSGID_LDAP_CLIENT_GENERIC_NOTICE_OF_DISCONNECTION,
                     "The Directory Server is closing the connection to this " +
-                    "client.");
+                    "client");
     registerMessage(MSGID_LDAP_CLIENT_DISCONNECT_IN_PROGRESS,
                     "The Directory Server is currently in the process of " +
-                    "closing this client connection.");
+                    "closing this client connection");
     registerMessage(MSGID_LDAP_CLIENT_DUPLICATE_MESSAGE_ID,
                     "The Directory Server is already processing another " +
                     "request on the same client connection with the same " +
-                    "message ID of %d.");
+                    "message ID of %d");
     registerMessage(MSGID_LDAP_CLIENT_CANNOT_ENQUEUE,
                     "The Directory Server encountered an unexpected error " +
                     "while attempting to add the client request to the work " +
-                    "queue:  %s.");
+                    "queue:  %s");
     registerMessage(MSGID_LDAP_CLIENT_DECODE_ZERO_BYTE_VALUE,
                     "The client sent a request to the Directory Server that " +
                     "was an ASN.1 element with a zero-byte value.  This " +
-                    "cannot possibly be a valid LDAP message.");
+                    "cannot possibly be a valid LDAP message");
     registerMessage(MSGID_LDAP_CLIENT_DECODE_MAX_REQUEST_SIZE_EXCEEDED,
                     "The client sent a request to the Directory Server with " +
                     "an ASN.1 element value length of %d bytes.  This " +
                     "exceeds the maximum allowed request size of %d bytes, " +
-                    "so processing cannot continue on this connection.");
+                    "so processing cannot continue on this connection");
     registerMessage(MSGID_LDAP_CLIENT_DECODE_INVALID_MULTIBYTE_LENGTH,
                     "The client sent a request to the Directory Server with " +
                     "an ASN.1 element using multiple bytes to express the " +
                     "value length.  The request indicated that %d bytes were " +
                     "needed to express the length, but this exceeds the " +
-                    "maximum allowed limit of four bytes.");
+                    "maximum allowed limit of four bytes");
     registerMessage(MSGID_LDAP_CLIENT_DECODE_ASN1_FAILED,
                     "The client sent a request to the Directory Server that " +
-                    "could not be properly decoded as an ASN.1 element:  %s.");
+                    "could not be properly decoded as an ASN.1 element:  %s");
     registerMessage(MSGID_LDAP_CLIENT_DECODE_LDAP_MESSAGE_FAILED,
                     "The client sent a request to the Directory Server that " +
-                    "could not be properly decoded as an LDAP message:  %s.");
+                    "could not be properly decoded as an LDAP message:  %s");
     registerMessage(MSGID_LDAP_CLIENT_INVALID_DECODE_STATE,
                     "An internal error has occurred within the Directory " +
                     "Server to cause it to lose track of where it is in " +
                     "decoding requests on this client connection.  It had an " +
                     "invalid decode state of %d, and this connection must be " +
-                    "terminated.");
+                    "terminated");
     registerMessage(MSGID_LDAP_CLIENT_DECODE_INVALID_REQUEST_TYPE,
                     "The client sent an LDAP message to the Directory Server " +
-                    "that was not a valid message for a client request:  %s.");
+                    "that was not a valid message for a client request:  %s");
     registerMessage(MSGID_LDAP_CLIENT_CANNOT_CONVERT_MESSAGE_TO_OPERATION,
                     "The Directory Server was unable to convert the LDAP " +
                     "message read from the client (%s) to an internal " +
-                    "operation for processing:  %s.");
+                    "operation for processing:  %s");
 
 
     registerMessage(MSGID_LDAP_CONNHANDLER_OPEN_SELECTOR_FAILED,
                     "The LDAP connection handler defined in configuration " +
                     "entry %s was unable to open a selector to allow it to " +
                     "multiplex the associated accept sockets:  %s.  This " +
-                    "connection handler will be disabled.");
+                    "connection handler will be disabled");
     registerMessage(MSGID_LDAP_CONNHANDLER_CREATE_CHANNEL_FAILED,
                     "The LDAP connection handler defined in configuration " +
                     "entry %s was unable to create a server socket channel " +
                     "to accept connections on %s:%d:  %s.  The Directory " +
                     "Server will not listen for new connections on that " +
-                    "address.");
+                    "address");
     registerMessage(MSGID_LDAP_CONNHANDLER_NO_ACCEPTORS,
                     "The LDAP connection handler defined in configuration " +
                     "entry %s was unable to create any of the socket " +
                     "channels on any of the configured addresses.  This " +
-                    "connection handler will be disabled.");
+                    "connection handler will be disabled");
     registerMessage(MSGID_LDAP_CONNHANDLER_DENIED_CLIENT,
                     "The connection attempt from client %s to %s has been " +
                     "rejected because the client was included in one of the " +
-                    "denied address ranges.");
+                    "denied address ranges");
     registerMessage(MSGID_LDAP_CONNHANDLER_DISALLOWED_CLIENT,
                     "The connection attempt from client %s to %s has been " +
                     "rejected because the client was not included in one of " +
-                    "the allowed address ranges.");
+                    "the allowed address ranges");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_SET_SECURITY_PROVIDER,
                     "An error occurred while attempting to configure the " +
                     "connection security provider for the client " +
-                    "connection:  %s.");
+                    "connection:  %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_UNABLE_TO_REGISTER_CLIENT,
                     "An internal error prevented the Directory Server from " +
                     "properly registering the client connection from %s to " +
-                    "%s with an appropriate request handler:  %s.");
+                    "%s with an appropriate request handler:  %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_ACCEPT_CONNECTION,
                     "The LDAP connection handler defined in configuration " +
                     "entry %s was unable to accept a new client connection:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_LDAP_CONNHANDLER_CONSECUTIVE_ACCEPT_FAILURES,
                     "The LDAP connection handler defined in configuration " +
                     "entry %s has experienced consecutive failures while " +
                     "trying to accept client connections:  %s.  This " +
-                    "connection handler will be disabled.");
+                    "connection handler will be disabled");
     registerMessage(MSGID_LDAP_CONNHANDLER_UNCAUGHT_ERROR,
                     "The LDAP connection handler defined in configuration " +
                     "entry %s caught an unexpected error while trying to " +
                     "listen for new connections:  %s.  This connection " +
-                    "handler will be disabled.");
+                    "handler will be disabled");
     registerMessage(MSGID_LDAP_CONNHANDLER_REJECTED_BY_SERVER,
                     "The attempt to register this connection with the " +
                     "Directory Server was rejected.  This may indicate that " +
                     "the server already has the maximum allowed number of " +
-                    "concurrent connections established.");
+                    "concurrent connections established");
 
 
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_LISTEN_ADDRESS,
@@ -5306,16 +5306,16 @@
                     "connections on all active addresses.  Changes to this " +
                     "configuration attribute will not take effect until the " +
                     "connection handler is disabled and re-enabled, or until " +
-                    "the Directory Server is restarted.");
+                    "the Directory Server is restarted");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_LISTEN_PORT,
                     "Specifies the TCP port on which this connection handler " +
                     "may accept client connections.  Changes to this " +
                     "configuration attribute will not take effect until the " +
                     "connection handler is disabled and re-enabled, or until " +
-                    "the Directory Server is restarted.");
+                    "the Directory Server is restarted");
     registerMessage(MSGID_LDAPS_CONNHANDLER_DESCRIPTION_ENABLE,
                     "Specifies whether to enable the LDAPS connection " +
-                    "handler.");
+                    "handler");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_BACKLOG,
                     "Specifies the accept queue size, which controls the " +
                     "number of new connection attempts that may be allowed " +
@@ -5325,7 +5325,7 @@
                     "connection attempts at the same time.  Changes to this " +
                     "configuration attribute will not take effect until the " +
                     "connection handler is disabled and re-enabled, or until " +
-                    "the Directory Server is restarted.");
+                    "the Directory Server is restarted");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_ALLOWED_CLIENTS,
                     "Specifies a set of address masks that may be used to " +
                     "determine the addresses of the clients that are allowed " +
@@ -5335,7 +5335,7 @@
                     "list will be allowed.  Changes to this configuration " +
                     "attribute will take effect immediately but will not " +
                     "interfere with connections that may already be " +
-                    "established.");
+                    "established");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_DENIED_CLIENTS,
                     "Specifies a set of address masks that may be used to " +
                     "determine the set of addresses of the clients that are " +
@@ -5347,7 +5347,7 @@
                     "client not matching a mask in that list will be " +
                     "allowed.  Changes to this configuration attribute will " +
                     "take effect immediately but will not interfere with " +
-                    "connections that may already be established.");
+                    "connections that may already be established");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_KEEP_STATS,
                     "Indicates whether the connection handler should keep " +
                     "statistics regarding LDAP client communication.  " +
@@ -5357,7 +5357,7 @@
                     "configuration attribute will take effect immediately, " +
                     "but will only apply for new connections and will have " +
                     "the side effect of clearing any existing statistical " +
-                    "data that may have been collected.");
+                    "data that may have been collected");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_ALLOW_LDAPV2,
                     "Indicates whether to allow communication with LDAPv2 " +
                     "clients.  LDAPv2 is considered an obsolete protocol, " +
@@ -5365,7 +5365,7 @@
                     "advantage of all features offered by the server.  " +
                     "Changes to this configuration attribute will take " +
                     "effect immediately, but will not interfere with " +
-                    "connections that may already be established.");
+                    "connections that may already be established");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_NUM_REQUEST_HANDLERS,
                     "Specifies the number of threads that should be used to " +
                     "read requests from clients and place them in the " +
@@ -5375,13 +5375,13 @@
                     "Changes to this configuration attribute will not take " +
                     "effect until the connection handler is disabled and " +
                     "re-enabled, or until the Directory Server is " +
-                    "restarted.");
+                    "restarted");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_SEND_REJECTION_NOTICE,
                     "Indicates whether to send an LDAPv3 notice of " +
                     "disconnection message to client connections that " +
                     "are rejected before closing the connection.  Changes to " +
                     "this configuration attribute will take effect " +
-                    "immediately.");
+                    "immediately");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_USE_TCP_KEEPALIVE,
                     "Indicates whether to use the TCP KeepAlive feature for " +
                     "client connections established through this connection " +
@@ -5391,7 +5391,7 @@
                     "devices from closing connections due to a lack of " +
                     "communication.  Changes to this configuration attribute " +
                     "will take effect immediately but will only be applied " +
-                    "to connections established after the change.");
+                    "to connections established after the change");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_USE_TCP_NODELAY,
                     "Indicates whether to use the TCP NoDelay feature for " +
                     "client connections established through this connection " +
@@ -5401,7 +5401,7 @@
                     "entries may be able to achieve higher throughput if it" +
                     " is disabled.  Changes to this configuration attribute " +
                     "will take effect immediately but will only be applied " +
-                    "to connections established after the change.");
+                    "to connections established after the change");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_ALLOW_REUSE_ADDRESS,
                     "Indicates whether to use the SO_REUSEADDR socket option " +
                     "for the socket accepting connections for this " +
@@ -5410,7 +5410,7 @@
                     "support engineers.  Changes to this configuration " +
                     "attribute will not take effect until the connection " +
                     "handler is disabled and re-enabled, or until the " +
-                    "Directory Server is restarted.");
+                    "Directory Server is restarted");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_MAX_REQUEST_SIZE,
                     "Specifies the maximum size in bytes that will be " +
                     "allowed when reading requests from clients.  This can " +
@@ -5418,13 +5418,13 @@
                     "clients that send extremely large requests.  A value of " +
                     "zero indicates that no limit should be imposed.  " +
                     "Changes to this configuration attribute will take " +
-                    "effect immediately.");
+                    "effect immediately");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_USE_SSL,
                     "Indicates whether this connection handler should use " +
                     "SSL when accepting connections from clients.  Changes " +
                     "to this configuration attribute will not take effect " +
                     "until the connection handler is disabled and " +
-                    "re-enabled, or until the Directory Server is restarted.");
+                    "re-enabled, or until the Directory Server is restarted");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_ALLOW_STARTTLS,
                     "Indicates whether this connection handler should allow " +
                     "clients to use the StartTLS extended operation to " +
@@ -5432,7 +5432,7 @@
                     "connection.  This may not be used if SSL is enabled " +
                     "for the connection handler.  Changes to this " +
                     "configuration attribute will take effect immediately " +
-                    "for LDAP clients.");
+                    "for LDAP clients");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_SSL_CLIENT_AUTH_POLICY,
                     "Specifies the policy that should be used regarding " +
                     "requesting or requiring the client to present its own " +
@@ -5441,260 +5441,260 @@
                     "established connection.  Changes to this configuration " +
                     "attribute will not take effect until the connection " +
                     "handler is disabled and re-enabled, or until the " +
-                    "Directory Server is restarted.");
+                    "Directory Server is restarted");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_SSL_CERT_NICKNAME,
                     "Specifies the nickname of the certificate that the " +
                     "connection handler should use when accepting SSL-based " +
                     "connections or performing StartTLS negotiation.  " +
                     "Changes to this configuration attribute will not take " +
                     "effect until the connection handler is disabled and " +
-                    "re-enabled, or until the Directory Server is restarted.");
+                    "re-enabled, or until the Directory Server is restarted");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_SSL_ENABLED_PROTOCOLS,
                     "Specifies the names of the SSL protocols that will be " +
                     "allowed for use in SSL or StartTLS communication.  " +
                     "Changes to this configuration attribute will take " +
                     "immediately but will only impact new SSL/TLS-based " +
-                    "sessions created after the change.");
+                    "sessions created after the change");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_SSL_ENABLED_CIPHERS,
                     "Specifies the names of the SSL cipher suites that will " +
                     "be allowed for use in SSL or StartTLS communication.  " +
                     "Changes to this configuration attribute will take " +
                     "immediately but will only impact new SSL/TLS-based " +
-                    "sessions created after the change.");
+                    "sessions created after the change");
 
 
     registerMessage(MSGID_LDAP_CONNHANDLER_UNKNOWN_LISTEN_ADDRESS,
                     "The specified listen address \"%s\" in configuration " +
                     "entry \"%s\" could not be resolved:  %s.  Please make " +
                     "sure that name resolution is properly configured on " +
-                    "this system.");
+                    "this system");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_LISTEN_ADDRESS,
                     "An unexpected error occurred while processing the " +
                     ATTR_LISTEN_ADDRESS + " attribute in configuration entry " +
                     "%s, which is used to specify the address or set of " +
                     "addresses on which to listen for client connections:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_LDAP_CONNHANDLER_NO_LISTEN_PORT,
                     "No listen port was defined using configuration " +
                     ATTR_LISTEN_PORT + " in configuration entry %s.  This is " +
-                    "a required attribute.");
+                    "a required attribute");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_LISTEN_PORT,
                     "An unexpected error occurred while processing the " +
                     ATTR_LISTEN_PORT + " attribute in configuration entry " +
                     "%s, which is used to specify the port on which to " +
-                    "listen for client connections:  %s.");
+                    "listen for client connections:  %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_BACKLOG,
                     "An unexpected error occurred while processing the " +
                     ATTR_ACCEPT_BACKLOG + " attribute in configuration entry " +
                     "%s, which is used to specify the accept backlog size:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_ALLOWED_CLIENTS,
                     "An unexpected error occurred while processing the " +
                     ATTR_ALLOWED_CLIENT + " attribute in configuration entry " +
                     "%s, which is used to specify the address mask(s) of the " +
                     "clients that are allowed to establish connections to " +
-                    "this connection handler:  %s.");
+                    "this connection handler:  %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_DENIED_CLIENTS,
                     "An unexpected error occurred while processing the " +
                     ATTR_DENIED_CLIENT + " attribute in configuration entry " +
                     "%s, which is used to specify the address mask(s) of the " +
                     "clients that are not allowed to establish connections " +
-                    "to this connection handler:  %s.");
+                    "to this connection handler:  %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_ALLOW_LDAPV2,
                     "An unexpected error occurred while processing the " +
                     ATTR_ALLOW_LDAPV2 + " attribute in configuration entry " +
                     "%s, which is used to indicate whether LDAPv2 clients " +
-                    "will be allowed to access this connection handler:  %s.");
+                    "will be allowed to access this connection handler:  %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_KEEP_STATS,
                     "An unexpected error occurred while processing the " +
                     ATTR_KEEP_LDAP_STATS + " attribute in configuration " +
                     "entry %s, which is used to indicate whether LDAP usage " +
                     "statistics should be enabled for this connection " +
-                    "handler:  %s.");
+                    "handler:  %s");
     registerMessage(
          MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_NUM_REQUEST_HANDLERS,
          "An unexpected error occurred while processing the " +
          ATTR_NUM_REQUEST_HANDLERS + " attribute in configuration entry %s, " +
          "which is used to specify the number of request handlers to use " +
-         "to read requests from clients: %s.");
+         "to read requests from clients: %s");
     registerMessage(
          MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_SEND_REJECTION_NOTICE,
          "An unexpected error occurred while processing the " +
          ATTR_SEND_REJECTION_NOTICE + " attribute in configuration entry %s, " +
          "which is used to indicate whether to send a notice of " +
-         "disconnection message to rejected client connections: %s.");
+         "disconnection message to rejected client connections: %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_USE_TCP_KEEPALIVE,
                     "An unexpected error occurred while processing the " +
                     ATTR_USE_TCP_KEEPALIVE + " attribute in configuration " +
                     "entry %s, which is used to periodically send TCP " +
-                    "Keep-Alive messages over idle connections:  %s.");
+                    "Keep-Alive messages over idle connections:  %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_USE_TCP_NODELAY,
                     "An unexpected error occurred while processing the " +
                     ATTR_USE_TCP_NODELAY + " attribute in configuration " +
                     "entry %s, which is used to determine whether to " +
-                    "immediately flush responses to clients:  %s.");
+                    "immediately flush responses to clients:  %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_ALLOW_REUSE_ADDRESS,
                     "An unexpected error occurred while processing the " +
                     ATTR_ALLOW_REUSE_ADDRESS + " attribute in configuration " +
                     "entry %s, which is used to determine whether to set the " +
-                    "SO_REUSEADDR option on the listen socket:  %s.");
+                    "SO_REUSEADDR option on the listen socket:  %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_MAX_REQUEST_SIZE,
                     "An unexpected error occurred while processing the " +
                     ATTR_MAX_REQUEST_SIZE + " attribute in configuration " +
                     "entry %s, which is used to determine the maximum size " +
-                    "in bytes that may be used for a client request:  %s.");
+                    "in bytes that may be used for a client request:  %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_USE_SSL,
                     "An unexpected error occurred while processing the " +
                     ATTR_USE_SSL + " attribute in configuration entry %s, " +
                     "which is used to indicate whether to use SSL when " +
-                    "accepting client connections:  %s.");
+                    "accepting client connections:  %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_HAVE_SSL_AND_STARTTLS,
                     "The LDAP connection handler defined in configuration " +
                     "entry %s is configured to communicate over SSL and " +
                     "also to allow clients to use the StartTLS extended " +
                     "operation.  These options may not be used at the same " +
                     "time, so clients will not be allowed to use the " +
-                    "StartTLS operation.");
+                    "StartTLS operation");
     registerMessage(MSGID_LDAP_CONNHANDLER_NO_KEYMANAGER_DN,
                     "The LDAP connection handler defined in configuration " +
                     "entry %s is configured to use either SSL or StartTLS, " +
                     "but does not specify which key manager provider should " +
-                    "be used.");
+                    "be used");
     registerMessage(MSGID_LDAP_CONNHANDLER_NO_TRUSTMANAGER_DN,
                     "The LDAP connection handler defined in configuration " +
                     "entry %s is configured to use either SSL or StartTLS, " +
                     "but does not specify which trust manager provider " +
-                    "should be used.");
+                    "should be used");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_ALLOW_STARTTLS,
                     "An unexpected error occurred while processing the " +
                     ATTR_ALLOW_STARTTLS + " attribute in configuration entry " +
                     "%s, which is used to indicate whether clients may use " +
-                    "the StartTLS extended operation:  %s.");
+                    "the StartTLS extended operation:  %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_INVALID_SSL_CLIENT_AUTH_POLICY,
                     "The SSL client authentication policy \"%s\" specified " +
                     "in attribute " + ATTR_SSL_CLIENT_AUTH_POLICY +
                     " of configuration entry %s is invalid.  The value must " +
-                    "be one of \"disabled\", \"optional\", or \"required\".");
+                    "be one of \"disabled\", \"optional\", or \"required\"");
     registerMessage(
          MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_SSL_CLIENT_AUTH_POLICY,
          "An unexpected error occurred while processing the " +
          ATTR_SSL_CLIENT_AUTH_POLICY + " attribute in configuration entry " +
          "%s, which is used to specify the policy that should be used " +
-         "for requesting/requiring SSL client authentication:  %s.");
+         "for requesting/requiring SSL client authentication:  %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_SSL_CERT_NICKNAME,
                     "An unexpected error occurred while processing the " +
                     ATTR_SSL_CERT_NICKNAME + " attribute in configuration " +
                     "entry %s, which is used to specify the nickname of the " +
                     "certificate to use for accepting SSL/TSL connections:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_SSL_PROTOCOLS,
                     "An unexpected error occurred while processing the " +
                     ATTR_SSL_PROTOCOLS + " attribute in configuration " +
                     "entry %s, which is used to specify the names of the " +
-                    "SSL protocols to allow for SSL/TLS sessions:  %s.");
+                    "SSL protocols to allow for SSL/TLS sessions:  %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_SSL_CIPHERS,
                     "An unexpected error occurred while processing the " +
                     ATTR_SSL_PROTOCOLS + " attribute in configuration " +
                     "entry %s, which is used to specify the names of the " +
-                    "SSL cipher suites to allow for SSL/TLS sessions:  %s.");
+                    "SSL cipher suites to allow for SSL/TLS sessions:  %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_KEYMANAGER_DN,
                     "Specifies the DN of the configuration entry for the key " +
                     "manager provider that should be used with this LDAP " +
                     "connection handler.  Changes to this attribute will " +
                     "take effect immediately, but only for subsequent " +
                     "attempts to access the key manager provider for " +
-                    "associated client connections.");
+                    "associated client connections");
     registerMessage(MSGID_LDAP_CONNHANDLER_INVALID_KEYMANAGER_DN,
                     "Configuration attribute " + ATTR_KEYMANAGER_DN +
                     " of configuration entry %s has an invalid value %s " +
                     "which does not reference an enabled key manager " +
-                    "provider.");
+                    "provider");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_KEYMANAGER_DN,
                     "An error occurred while processing the " +
                     ATTR_KEYMANAGER_DN + " attribute in configuration entry " +
                     "%s, which is used to specify the key manager provider " +
-                    "for use with the LDAP connection handler:  %s.");
+                    "for use with the LDAP connection handler:  %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_DESCRIPTION_TRUSTMANAGER_DN,
                     "Specifies the DN of the configuration entry for the " +
                     "trust manager provider that should be used with this " +
                     "LDAP connection handler.  Changes to this attribute " +
                     "will take effect immediately, but only for subsequent " +
                     "attempts to access the trust manager provider for " +
-                    "associated client connections.");
+                    "associated client connections");
     registerMessage(MSGID_LDAP_CONNHANDLER_INVALID_TRUSTMANAGER_DN,
                     "Configuration attribute " + ATTR_TRUSTMANAGER_DN +
                     " of configuration entry %s has an invalid value %s " +
                     "which does not reference an enabled trust manager " +
-                    "provider.");
+                    "provider");
     registerMessage(MSGID_LDAP_CONNHANDLER_CANNOT_DETERMINE_TRUSTMANAGER_DN,
                     "An error occurred while processing the " +
                     ATTR_TRUSTMANAGER_DN + " attribute in configuration " +
                     "entry %s, which is used to specify the trust manager " +
-                    "provider for use with the LDAP connection handler:  %s.");
+                    "provider for use with the LDAP connection handler:  %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_INVALID_ADDRESS_MASK,
                     "The string %s defined in attribute %s of configuration " +
                     "entry %s could not be decoded as a valid address mask:  "+
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_LDAP_CONNHANDLER_NEW_ALLOWED_CLIENTS,
                     "A new set of allowed client address masks has been " +
-                    "applied for configuration entry %s.");
+                    "applied for configuration entry %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_NEW_DENIED_CLIENTS,
                     "A new set of denied client address masks has been " +
-                    "applied for configuration entry %s.");
+                    "applied for configuration entry %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_NEW_ALLOW_LDAPV2,
                     "The value of the " + ATTR_ALLOW_LDAPV2 +
                     " attribute has been updated to %s in configuration " +
-                    "entry %s.");
+                    "entry %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_NEW_KEEP_STATS,
                     "The value of the " + ATTR_KEEP_LDAP_STATS +
                     " attribute has been updated to %s in configuration " +
-                    "entry %s.");
+                    "entry %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_NEW_SEND_REJECTION_NOTICE,
                     "The value of the " + ATTR_SEND_REJECTION_NOTICE +
                     " attribute has been updated to %s in configuration " +
-                    "entry %s.");
+                    "entry %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_NEW_USE_KEEPALIVE,
                     "The value of the " + ATTR_USE_TCP_KEEPALIVE +
                     " attribute has been updated to %s in configuration " +
-                    "entry %s.");
+                    "entry %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_NEW_USE_TCP_NODELAY,
                     "The value of the " + ATTR_USE_TCP_NODELAY +
                     " attribute has been updated to %s in configuration " +
-                    "entry %s.");
+                    "entry %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_NEW_MAX_REQUEST_SIZE,
                     "The value of the " + ATTR_MAX_REQUEST_SIZE +
                     " attribute has been updated to %s in configuration " +
-                    "entry %s.");
+                    "entry %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_NEW_ALLOW_STARTTLS,
                     "The value of the " + ATTR_ALLOW_STARTTLS +
                     " attribute has been updated to %s in configuration " +
-                    "entry %s.");
+                    "entry %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_NEW_SSL_PROTOCOLS,
                     "The value of the " + ATTR_SSL_PROTOCOLS +
                     " attribute has been updated to %s in configuration " +
-                    "entry %s.");
+                    "entry %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_NEW_SSL_CIPHERS,
                     "The value of the " + ATTR_SSL_CIPHERS +
                     " attribute has been updated to %s in configuration " +
-                    "entry %s.");
+                    "entry %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_NEW_KEYMANAGER_DN,
                     "The value of the " + ATTR_KEYMANAGER_DN +
                     " attribute has been updated to %s in configuration " +
-                    "entry %s.");
+                    "entry %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_NEW_TRUSTMANAGER_DN,
                     "The value of the " + ATTR_TRUSTMANAGER_DN +
                     " attribute has been updated to %s in configuration " +
-                    "entry %s.");
+                    "entry %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_STARTED_LISTENING,
-                    "Started listening for new connections on %s.");
+                    "Started listening for new connections on %s");
     registerMessage(MSGID_LDAP_CONNHANDLER_STOPPED_LISTENING,
-                    "Stopped listening for new connections on %s.");
+                    "Stopped listening for new connections on %s");
 
 
     registerMessage(MSGID_LDAP_REQHANDLER_OPEN_SELECTOR_FAILED,
                     "%s was unable to open a selector to multiplex reads " +
                     "from clients:  %s.  This request handler cannot " +
-                    "continue processing.");
+                    "continue processing");
     registerMessage(MSGID_LDAP_REQHANDLER_DETECTED_JVM_ISSUE_CR6322825,
                     "Unable to call select() in the LDAP connection " +
                     "handler:  %s.  It appears that your JVM may be " +
@@ -5706,77 +5706,77 @@
                     "Update 8 or higher) or set the number of available " +
                     "file descriptors to a value greater than or equal to " +
                     "8193 (e.g., by issuing the command 'ulimit -n 8193') " +
-                    "before starting the Directory Server.");
+                    "before starting the Directory Server");
     registerMessage(MSGID_LDAP_REQHANDLER_CANNOT_REGISTER,
                     "%s was unable to register this client connection with " +
-                    "the selector:  %s.");
+                    "the selector:  %s");
     registerMessage(MSGID_LDAP_REQHANDLER_REJECT_DUE_TO_SHUTDOWN,
                     "This connection could not be registered with a " +
                     "request handler because the Directory Server is " +
-                    "shutting down.");
+                    "shutting down");
     registerMessage(MSGID_LDAP_REQHANDLER_REJECT_DUE_TO_QUEUE_FULL,
                     "This connection could not be registered with a request " +
                     "handler because the pending queue associated with %s " +
-                    "is too full.");
+                    "is too full");
     registerMessage(MSGID_LDAP_REQHANDLER_DEREGISTER_DUE_TO_SHUTDOWN,
                     "This client connection is being deregistered from the " +
                     "associated request handler because the Directory Server " +
-                    "is shutting down:  %s.");
+                    "is shutting down:  %s");
     registerMessage(MSGID_LDAP_REQHANDLER_UNEXPECTED_SELECT_EXCEPTION,
                     "The LDAP request handler thread \"%s\" encountered an " +
                     "unexpected error that would have caused the thread to " +
                     "die:  %s.  The error has been caught and the request " +
-                    "handler should continue operating as normal.");
+                    "handler should continue operating as normal");
 
 
     registerMessage(MSGID_LDAP_DISCONNECT_DUE_TO_INVALID_REQUEST_TYPE,
                     "Terminating this connection because the client sent " +
                     "an invalid message of type %s (LDAP message ID %d) that " +
-                    "is not allowed for request messages.");
+                    "is not allowed for request messages");
     registerMessage(MSGID_LDAP_DISCONNECT_DUE_TO_PROCESSING_FAILURE,
                     "An unexpected failure occurred while trying to process " +
                     "a request of type %s (LDAP message ID %d):  %s.  The " +
-                    "client connection will be terminated.");
+                    "client connection will be terminated");
     registerMessage(MSGID_LDAP_INVALID_BIND_AUTH_TYPE,
                     "The bind request message (LDAP message ID %d) included " +
                     "an invalid authentication type of %s.  This is a " +
                     "protocol error, and this connection will be terminated " +
-                    "as per RFC 2251 section 4.2.3.");
+                    "as per RFC 2251 section 4.2.3");
     registerMessage(MSGID_LDAP_DISCONNECT_DUE_TO_BIND_PROTOCOL_ERROR,
                     "This client connection is being terminated because a " +
                     "protocol error occurred while trying to process a bind " +
                     "request.  The LDAP message ID was %d and the error " +
-                    "message for the bind response was %s.");
+                    "message for the bind response was %s");
 
 
     registerMessage(MSGID_LDAPV2_SKIPPING_EXTENDED_RESPONSE,
                     "An extended response message would have been sent to an " +
                     "LDAPv2 client (connection ID=%d, operation ID=%d):  " +
                     "%s.  LDAPv2 does not allow extended operations, so this " +
-                    "response will not be sent.");
+                    "response will not be sent");
     registerMessage(MSGID_LDAPV2_SKIPPING_SEARCH_REFERENCE,
                     "A search performed by an LDAPv2 client (connection " +
                     "ID=%d, operation ID=%d) would have included a search " +
                     "result reference %s.  Referrals are not allowed for " +
                     "LDAPv2 clients, so this search reference will not be " +
-                    "sent.");
+                    "sent");
     registerMessage(MSGID_LDAPV2_REFERRAL_RESULT_CHANGED,
                     "The original result code for this message was " +
                     LDAPResultCode.REFERRAL + " but this result is not " +
-                    "allowed for LDAPv2 clients.");
+                    "allowed for LDAPv2 clients");
     registerMessage(MSGID_LDAPV2_REFERRALS_OMITTED,
                     "The response included one or more referrals, which are " +
                     "not allowed for LDAPv2 clients.  The referrals included " +
-                    "were:  %s.");
+                    "were:  %s");
     registerMessage(MSGID_LDAPV2_CLIENTS_NOT_ALLOWED,
                     "The Directory Server has been configured to deny access " +
-                    "to LDAPv2 clients.  This connection will be closed.");
+                    "to LDAPv2 clients.  This connection will be closed");
     registerMessage(MSGID_LDAPV2_EXTENDED_REQUEST_NOT_ALLOWED,
                     "The client with connection ID %d authenticated to the " +
                     "Directory Server using LDAPv2, but attempted to send an " +
                     "extended operation request (LDAP message ID %d), which " +
                     "is not allowed for LDAPv2 clients.  The connection will " +
-                    "be terminated.");
+                    "be terminated");
 
 
 
@@ -5785,348 +5785,348 @@
                     "monitor provider as defined in configuration entry %s.  " +
                     "This monitor provider should only be dynamically " +
                     "created within the Directory Server itself and not " +
-                    "from within the configuration.");
+                    "from within the configuration");
 
 
     registerMessage(MSGID_INTERNAL_CANNOT_DECODE_DN,
                     "An unexpected error occurred while trying to decode the " +
-                    "DN %s used for internal operations as a root user:  %s.");
+                    "DN %s used for internal operations as a root user:  %s");
 
 
     registerMessage(MSGID_LDAP_TLS_EXISTING_SECURITY_PROVIDER,
                     "The TLS connection security provider cannot be enabled " +
                     "on this client connection because it is already using " +
                     "the %s provider.  StartTLS may only be used on " +
-                    "clear-text connections.");
+                    "clear-text connections");
     registerMessage(MSGID_LDAP_TLS_STARTTLS_NOT_ALLOWED,
                     "StartTLS cannot be enabled on this LDAP client " +
                     "connection because the corresponding LDAP connection " +
                     "handler is configured to reject StartTLS requests.  " +
                     "The use of StartTLS may be enabled using the " +
-                    ATTR_ALLOW_STARTTLS + " configuration attribute.");
+                    ATTR_ALLOW_STARTTLS + " configuration attribute");
     registerMessage(MSGID_LDAP_TLS_CANNOT_CREATE_TLS_PROVIDER,
                     "An error occurred while attempting to create a TLS " +
                     "connection security provider for this client connection " +
-                    "for use with StartTLS:  %s.");
+                    "for use with StartTLS:  %s");
     registerMessage(MSGID_LDAP_TLS_NO_PROVIDER,
                     "StartTLS is not available on this client connection " +
                     "because the connection does not have access to a TLS " +
-                    "connection security provider.");
+                    "connection security provider");
     registerMessage(MSGID_LDAP_TLS_CLOSURE_NOT_ALLOWED,
                     "The LDAP connection handler does not allow clients to " +
                     "close a StartTLS session on a client connection while " +
                     "leaving the underlying TCP connection active.  The " +
-                    "TCP connection will be closed.");
+                    "TCP connection will be closed");
     registerMessage(MSGID_LDAP_NO_CLEAR_SECURITY_PROVIDER,
                     "LDAP connection handler %s could not send a clear-text " +
                     "response to the client because it does not have a " +
-                    "reference to a clear connection security provider.");
+                    "reference to a clear connection security provider");
 
 
     registerMessage(MSGID_LDAP_PAGED_RESULTS_DECODE_NULL,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "paged results control value because the element is " +
-                    "null.");
+                    "null");
     registerMessage(MSGID_LDAP_PAGED_RESULTS_DECODE_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "paged results control value because the element could " +
-                    "not be decoded as a sequence:  %s.");
+                    "not be decoded as a sequence:  %s");
     registerMessage(MSGID_LDAP_PAGED_RESULTS_DECODE_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "paged results control value because the request " +
                     "sequence has an invalid number of elements (expected 2, " +
-                    "got %d).");
+                    "got %d)");
     registerMessage(MSGID_LDAP_PAGED_RESULTS_DECODE_SIZE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "paged results control value because the size element " +
-                    "could not be properly decoded:  %s.");
+                    "could not be properly decoded:  %s");
     registerMessage(MSGID_LDAP_PAGED_RESULTS_DECODE_COOKIE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "paged results control value because the cookie could " +
-                    "not be properly decoded:  %s.");
+                    "not be properly decoded:  %s");
 
 
     registerMessage(MSGID_LDAPASSERT_NO_CONTROL_VALUE,
                     "Cannot decode the provided LDAP assertion control " +
-                    "because the control does not have a value.");
+                    "because the control does not have a value");
     registerMessage(MSGID_LDAPASSERT_INVALID_CONTROL_VALUE,
                     "Cannot decode the provided LDAP assertion control " +
                     "because the control value cannot be decoded as an " +
-                    "ASN.1 element:  %s.");
+                    "ASN.1 element:  %s");
 
 
     registerMessage(MSGID_PREREADREQ_NO_CONTROL_VALUE,
                     "Cannot decode the provided LDAP pre-read request " +
-                    "control because the control does not have a value.");
+                    "control because the control does not have a value");
     registerMessage(MSGID_PREREADREQ_CANNOT_DECODE_VALUE,
                     "Cannot decode the provided LDAP pre-read request " +
                     "control because an error occurred while trying to " +
-                    "decode the control value:  %s.");
+                    "decode the control value:  %s");
 
 
     registerMessage(MSGID_POSTREADREQ_NO_CONTROL_VALUE,
                     "Cannot decode the provided LDAP post-read request " +
-                    "control because the control does not have a value.");
+                    "control because the control does not have a value");
     registerMessage(MSGID_POSTREADREQ_CANNOT_DECODE_VALUE,
                     "Cannot decode the provided LDAP post-read request " +
                     "control because an error occurred while trying to " +
-                    "decode the control value:  %s.");
+                    "decode the control value:  %s");
 
 
     registerMessage(MSGID_PREREADRESP_NO_CONTROL_VALUE,
                     "Cannot decode the provided LDAP pre-read response " +
-                    "control because the control does not have a value.");
+                    "control because the control does not have a value");
     registerMessage(MSGID_PREREADRESP_CANNOT_DECODE_VALUE,
                     "Cannot decode the provided LDAP pre-read response " +
                     "control because an error occurred while trying to " +
-                    "decode the control value:  %s.");
+                    "decode the control value:  %s");
 
 
     registerMessage(MSGID_POSTREADRESP_NO_CONTROL_VALUE,
                     "Cannot decode the provided LDAP post-read response " +
-                    "control because the control does not have a value.");
+                    "control because the control does not have a value");
     registerMessage(MSGID_POSTREADRESP_CANNOT_DECODE_VALUE,
                     "Cannot decode the provided LDAP post-read response " +
                     "control because an error occurred while trying to " +
-                    "decode the control value:  %s.");
+                    "decode the control value:  %s");
 
 
     registerMessage(MSGID_PROXYAUTH1_CONTROL_NOT_CRITICAL,
                     "Unwilling to process the request because it contains a " +
                     "proxied authorization V1 control which is not marked " +
                     "critical.  The proxied authorization control must " +
-                    "always have a criticality of \"true\".");
+                    "always have a criticality of \"true\"");
     registerMessage(MSGID_PROXYAUTH1_NO_CONTROL_VALUE,
                     "Cannot decode the provided proxied authorization V1 " +
-                    "control because it does not have a value.");
+                    "control because it does not have a value");
     registerMessage(MSGID_PROXYAUTH1_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided proxied authorization V1 " +
                     "control because the ASN.1 sequence in the control " +
                     "value has an invalid number of elements (expected 1, " +
-                    "got %d).");
+                    "got %d)");
     registerMessage(MSGID_PROXYAUTH1_CANNOT_DECODE_VALUE,
                     "Cannot decode the provided proxied authorization V1 " +
                     "control because an error occurred while attempting to " +
-                    "decode the control value:  %s.");
+                    "decode the control value:  %s");
     registerMessage(MSGID_PROXYAUTH1_CANNOT_LOCK_USER,
                     "Unable to obtain a lock on user entry %s for the " +
-                    "proxied authorization V1 control validation.");
+                    "proxied authorization V1 control validation");
     registerMessage(MSGID_PROXYAUTH1_NO_SUCH_USER,
                     "User %s specified in the proxied authorization V1 " +
-                    "control does not exist in the Directory Server.");
+                    "control does not exist in the Directory Server");
     registerMessage(MSGID_PROXYAUTH1_UNUSABLE_ACCOUNT,
                     "Use of the proxied authorization V1 control for user %s " +
-                    "is not allowed by the password policy configuration.");
+                    "is not allowed by the password policy configuration");
 
 
     registerMessage(MSGID_PROXYAUTH2_CONTROL_NOT_CRITICAL,
                     "Unwilling to process the request because it contains a " +
                     "proxied authorization V2 control which is not marked " +
                     "critical.  The proxied authorization control must " +
-                    "always have a criticality of \"true\".");
+                    "always have a criticality of \"true\"");
     registerMessage(MSGID_PROXYAUTH2_NO_CONTROL_VALUE,
                     "Cannot decode the provided proxied authorization V2 " +
-                    "control because it does not have a value.");
+                    "control because it does not have a value");
     registerMessage(MSGID_PROXYAUTH2_CANNOT_DECODE_VALUE,
                     "Cannot decode the provided proxied authorization V2 " +
                     "control because an error occurred while attempting to " +
-                    "decode the control value:  %s.");
+                    "decode the control value:  %s");
     registerMessage(MSGID_PROXYAUTH2_CANNOT_LOCK_USER,
                     "Unable to obtain a lock on user entry %s for the " +
-                    "proxied authorization V2 control validation.");
+                    "proxied authorization V2 control validation");
     registerMessage(MSGID_PROXYAUTH2_NO_IDENTITY_MAPPER,
                     "Unable to process proxied authorization V2 control " +
                     "because it contains an authorization ID based on a " +
                     "username and no proxied authorization identity mapper " +
-                    "is configured in the Directory Server.");
+                    "is configured in the Directory Server");
     registerMessage(MSGID_PROXYAUTH2_INVALID_AUTHZID,
                     "The authorization ID \"%s\" contained in the proxied " +
                     "authorization V2 control is invalid because it does not " +
                     "start with \"dn:\" to indicate a user DN or \"u:\" to " +
-                    "indicate a username.");
+                    "indicate a username");
     registerMessage(MSGID_PROXYAUTH2_NO_SUCH_USER,
                     "User %s specified in the proxied authorization V2 " +
-                    "control does not exist in the Directory Server.");
+                    "control does not exist in the Directory Server");
     registerMessage(MSGID_PROXYAUTH2_UNUSABLE_ACCOUNT,
                     "Use of the proxied authorization V2 control for user %s " +
-                    "is not allowed by the password policy configuration.");
+                    "is not allowed by the password policy configuration");
 
 
     registerMessage(MSGID_PSEARCH_CHANGETYPES_INVALID_TYPE,
                     "The provided integer value %d does not correspond to " +
-                    "any persistent search change type.");
+                    "any persistent search change type");
     registerMessage(MSGID_PSEARCH_CHANGETYPES_NO_TYPES,
                     "The provided integer value indicated that there were no " +
-                    "persistent search change types, which is not allowed.");
+                    "persistent search change types, which is not allowed");
     registerMessage(MSGID_PSEARCH_CHANGETYPES_INVALID_TYPES,
                     "The provided integer value %d was outside the range of " +
-                    "acceptable values for an encoded change type set.");
+                    "acceptable values for an encoded change type set");
 
 
     registerMessage(MSGID_PSEARCH_NO_CONTROL_VALUE,
                     "Cannot decode the provided persistent search control " +
-                    "because it does not have a value.");
+                    "because it does not have a value");
     registerMessage(MSGID_PSEARCH_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided persistent search control " +
                     "because the value sequence has an invalid number of " +
-                    "elements (expected 3, got %d).");
+                    "elements (expected 3, got %d)");
     registerMessage(MSGID_PSEARCH_CANNOT_DECODE_VALUE,
                     "Cannot decode the provided persistent search control " +
                     "because an error occurred while attempting to decode " +
-                    "the control value:  %s.");
+                    "the control value:  %s");
 
 
     registerMessage(MSGID_ECN_NO_CONTROL_VALUE,
                     "Cannot decode the provided entry change notification " +
-                    "control because it does not have a value.");
+                    "control because it does not have a value");
     registerMessage(MSGID_ECN_INVALID_ELEMENT_COUNT,
                     "Cannot decode the provided entry change notification " +
                     "control because the value sequence has an invalid " +
-                    "number of elements (expected between 1 and 3, got %d).");
+                    "number of elements (expected between 1 and 3, got %d)");
     registerMessage(MSGID_ECN_ILLEGAL_PREVIOUS_DN,
                     "Cannot decode the provided entry change notification " +
                     "control because it contains a previous DN element but " +
                     "had a change type of %s.  The previous DN element may " +
-                    "only be provided with the modify DN change type.");
+                    "only be provided with the modify DN change type");
     registerMessage(MSGID_ECN_INVALID_ELEMENT_TYPE,
                     "Cannot decode the provided entry change notification " +
                     "control because the second element in the value " +
                     "sequence has an invalid type of %s that is not " +
-                    "appropriate for either a previous DN or a change number.");
+                    "appropriate for either a previous DN or a change number");
     registerMessage(MSGID_ECN_CANNOT_DECODE_VALUE,
                     "Cannot decode the provided entry change notification " +
                     "control because an error occurred while attempting to " +
-                    "decode the control value:  %s.");
+                    "decode the control value:  %s");
 
 
     registerMessage(MSGID_AUTHZIDRESP_NO_CONTROL_VALUE,
                     "Cannot decode the provided authorization identity " +
-                    "response control because it does not have a value.");
+                    "response control because it does not have a value");
 
 
     registerMessage(MSGID_LDAP_INTERMEDIATE_RESPONSE_DECODE_SEQUENCE,
                     "Cannot decode the provided ASN.1 element as an LDAP " +
                     "intermediate response protocol op because the element " +
-                    "could not be decoded as a sequence:  %s.");
+                    "could not be decoded as a sequence:  %s");
     registerMessage(
          MSGID_LDAP_INTERMEDIATE_RESPONSE_DECODE_INVALID_ELEMENT_COUNT,
          "Cannot decode the provided ASN.1 element as an LDAP intermediate " +
          "response protocol op because the request sequence had an invalid " +
-         "number of elements (expected 0, 1, or or 2, got %d).");
+         "number of elements (expected 0, 1, or or 2, got %d)");
     registerMessage(MSGID_LDAP_INTERMEDIATE_RESPONSE_CANNOT_DECODE_OID,
                     "An error occurred while attempting to decode the " +
-                    "intermediate response OID:  %s.");
+                    "intermediate response OID:  %s");
     registerMessage(MSGID_LDAP_INTERMEDIATE_RESPONSE_CANNOT_DECODE_VALUE,
                     "An error occurred while attempting to decode the " +
-                    "intermediate response value:  %s.");
+                    "intermediate response value:  %s");
     registerMessage(MSGID_LDAP_INTERMEDIATE_RESPONSE_INVALID_ELEMENT_TYPE,
                     "The intermediate response sequence element contained " +
                     "an invalid BER type %s that was not appropriate for " +
-                    "either the OID or the value.");
+                    "either the OID or the value");
 
 
     registerMessage(MSGID_MVFILTER_INVALID_LDAP_FILTER_TYPE,
                     "The provided LDAP filter \"%s\" cannot be used as a " +
                     "matched values filter because filters of type %s are " +
-                    "not allowed for use in matched values filters.");
+                    "not allowed for use in matched values filters");
     registerMessage(MSGID_MVFILTER_INVALID_DN_ATTRIBUTES_FLAG,
                     "The provided LDAP filter \"%s\" cannot be used as a " +
                     "matched values filter because it is an extensible " +
                     "match filter that contains the dnAttributes flag, which " +
-                    "is not allowed for matched values filters.");
+                    "is not allowed for matched values filters");
     registerMessage(MSGID_MVFILTER_INVALID_AVA_SEQUENCE_SIZE,
                     "The provided matched values filter could not be decoded " +
                     "because there were an invalid number of elements in the " +
-                    "attribute value assertion (expected 2, got %d).");
+                    "attribute value assertion (expected 2, got %d)");
     registerMessage(MSGID_MVFILTER_CANNOT_DECODE_AVA,
                     "An error occurred while attempting to decode the " +
                     "attribute value assertion in the provided matched " +
-                    "values filter:  %s.");
+                    "values filter:  %s");
     registerMessage(MSGID_MVFILTER_INVALID_SUBSTRING_SEQUENCE_SIZE,
                     "The provided matched values filter could not be decoded " +
                     "because there were an invalid number of elements " +
-                    "in the substring sequence (expected 2, got %d).");
+                    "in the substring sequence (expected 2, got %d)");
     registerMessage(MSGID_MVFILTER_NO_SUBSTRING_ELEMENTS,
                     "The provided matched values filter could not be decoded " +
                     "because there were no subInitial, subAny, or subFinal " +
-                    "components in the substring filter.");
+                    "components in the substring filter");
     registerMessage(MSGID_MVFILTER_MULTIPLE_SUBINITIALS,
                     "The provided matched values filter could not be decoded " +
                     "because there were multiple subInitial components in " +
-                    "the substring filter.");
+                    "the substring filter");
     registerMessage(MSGID_MVFILTER_MULTIPLE_SUBFINALS,
                     "The provided matched values filter could not be decoded " +
                     "because there were multiple subFinal components in " +
-                    "the substring filter.");
+                    "the substring filter");
     registerMessage(MSGID_MVFILTER_INVALID_SUBSTRING_ELEMENT_TYPE,
                     "The provided matched values filter could not be decoded " +
                     "because there was an invalid element of type %s in the " +
-                    "substring filter.");
+                    "substring filter");
     registerMessage(MSGID_MVFILTER_CANNOT_DECODE_SUBSTRINGS,
                     "The provided matched values filter could not be decoded " +
                     "because an error occurred while decoding the " +
-                    "substring filter component:  %s.");
+                    "substring filter component:  %s");
     registerMessage(MSGID_MVFILTER_CANNOT_DECODE_PRESENT_TYPE,
                     "The provided matched values filter could not be decoded " +
                     "because an error occurred while decoding the presence " +
-                    "filter component:  %s.");
+                    "filter component:  %s");
     registerMessage(MSGID_MVFILTER_INVALID_EXTENSIBLE_SEQUENCE_SIZE,
                     "The provided matched values filter could not be decoded " +
                     "because there were an invalid number of elements in the " +
-                    "extensible match sequence (expected 2 or 3, found %d).");
+                    "extensible match sequence (expected 2 or 3, found %d)");
     registerMessage(MSGID_MVFILTER_MULTIPLE_MATCHING_RULE_IDS,
                     "The provided matched values filter could not be decoded " +
                     "because there were multiple matching rule ID elements " +
-                    "found in the extensible match filter sequence.");
+                    "found in the extensible match filter sequence");
     registerMessage(MSGID_MVFILTER_MULTIPLE_ATTRIBUTE_TYPES,
                     "The provided matched values filter could not be decoded " +
                     "because there were multiple attribute type elements " +
-                    "found in the extensible match filter sequence.");
+                    "found in the extensible match filter sequence");
     registerMessage(MSGID_MVFILTER_MULTIPLE_ASSERTION_VALUES,
                     "The provided matched values filter could not be decoded " +
                     "because there were multiple assertion value elements " +
-                    "found in the extensible match filter sequence.");
+                    "found in the extensible match filter sequence");
     registerMessage(MSGID_MVFILTER_INVALID_EXTENSIBLE_ELEMENT_TYPE,
                     "The provided matched values filter could not be decoded " +
                     "because there was an invalid element of type %s in the " +
-                    "extensible match filter.");
+                    "extensible match filter");
     registerMessage(MSGID_MVFILTER_CANNOT_DECODE_EXTENSIBLE_MATCH,
                     "The provided matched values filter could not be decoded " +
                     "because an error occurred while decoding the extensible " +
-                    "match filter component:  %s.");
+                    "match filter component:  %s");
     registerMessage(MSGID_MVFILTER_INVALID_ELEMENT_TYPE,
                     "The provided matched values filter could not be decoded " +
-                    "because it had an invalid BER type of %s.");
+                    "because it had an invalid BER type of %s");
 
 
     registerMessage(MSGID_MATCHEDVALUES_NO_CONTROL_VALUE,
                     "Cannot decode the provided matched values control "+
-                    "because it does not have a value.");
+                    "because it does not have a value");
     registerMessage(MSGID_MATCHEDVALUES_CANNOT_DECODE_VALUE_AS_SEQUENCE,
                     "Cannot decode the provided matched values control " +
                     "because an error occurred while attempting to decode " +
-                    "the value as an ASN.1 sequence:  %s.");
+                    "the value as an ASN.1 sequence:  %s");
     registerMessage(MSGID_MATCHEDVALUES_NO_FILTERS,
                     "Cannot decode the provided matched values control " +
                     "because the control value does not specify any filters " +
-                    "for use in matching attribute values.");
+                    "for use in matching attribute values");
 
 
     registerMessage(MSGID_PWEXPIRED_CONTROL_HAS_VALUE,
                     "Cannot decode the provided control as a password " +
                     "expired control because the provided control had a " +
                     "value but the password expired control should not have " +
-                    "a value.");
+                    "a value");
 
 
     registerMessage(MSGID_PWEXPIRING_NO_CONTROL_VALUE,
                     "Cannot decode the provided password expiring control "+
-                    "because it does not have a value.");
+                    "because it does not have a value");
     registerMessage(MSGID_PWEXPIRING_CANNOT_DECODE_SECONDS_UNTIL_EXPIRATION,
                     "Cannot decode the provided control as a password " +
                     "expiring control because an error occurred while " +
                     "attempting to decode the number of seconds until " +
-                    "expiration:  %s.");
+                    "expiration:  %s");
 
 
     registerMessage(MSGID_JMX_CONNHANDLER_DESCRIPTION_LISTEN_PORT,
@@ -6134,83 +6134,83 @@
             "may accept administrative connections.  Changes to this " +
             "configuration attribute will not take effect until the " +
             "connection handler is disabled and re-enabled, or until " +
-            "the Directory Server is restarted.");
+            "the Directory Server is restarted");
     registerMessage(MSGID_JMX_CONNHANDLER_NO_LISTEN_PORT,
             "No listen port was defined using configuration " +
             ATTR_LISTEN_PORT + " in configuration entry %s.  This is " +
-            "a required attribute.");
+            "a required attribute");
     registerMessage(MSGID_JMX_CONNHANDLER_CANNOT_DETERMINE_LISTEN_PORT,
             "An unexpected error occurred while processing the " +
             ATTR_LISTEN_PORT + " attribute in configuration entry " +
             "%s, which is used to specify the port on which to " +
-            "listen for client connections:  %s.");
+            "listen for client connections:  %s");
     registerMessage(MSGID_JMX_CONNHANDLER_DESCRIPTION_USE_SSL,
             "Indicates whether this connection handler should use " +
             "SSL when accepting connections from clients.  Changes " +
             "to this configuration attribute will not take effect " +
             "until the connection handler is disabled and " +
-            "re-enabled, or until the Directory Server is restarted.");
+            "re-enabled, or until the Directory Server is restarted");
     registerMessage(MSGID_JMX_CONNHANDLER_CANNOT_DETERMINE_USE_SSL,
             "An unexpected error occurred while processing the " +
             ATTR_USE_SSL + " attribute in configuration entry %s, " +
             "which is used to indicate whether to use SSL when " +
-            "accepting client connections:  %s.");
+            "accepting client connections:  %s");
     registerMessage(MSGID_JMX_CONNHANDLER_DESCRIPTION_SSL_CERT_NICKNAME,
             "Specifies the nickname of the certificate that the " +
             "connection handler should use when accepting SSL-based " +
             "connections or performing StartTLS negotiation.  " +
             "Changes to this configuration attribute will not take " +
             "effect until the connection handler is disabled and " +
-            "re-enabled, or until the Directory Server is restarted.");
+            "re-enabled, or until the Directory Server is restarted");
     registerMessage(MSGID_JMX_CONNHANDLER_CANNOT_DETERMINE_SSL_CERT_NICKNAME,
             "An unexpected error occurred while processing the " +
             ATTR_SSL_CERT_NICKNAME + " attribute in configuration " +
             "entry %s, which is used to specify the nickname of the " +
             "certificate to use for accepting SSL/TSL connections:  " +
-            "%s.");
+            "%s");
     registerMessage(MSGID_JMX_CONNHANDLER_DESCRIPTION_KEYMANAGER_DN,
             "Specifies the DN of the key manager provider that the " +
             "connection handler should use when accepting SSL-based " +
             "connections or performing StartTLS negotiation.  " +
             "Changes to this configuration attribute will take effect " +
-            "immediately.");
+            "immediately");
     registerMessage(MSGID_JMX_CONNHANDLER_INVALID_KEYMANAGER_DN,
             "An error occurred while processing the " + ATTR_KEYMANAGER_DN +
             " attribute in configuration entry %s, because the provided " +
             "key manager DN %s does not refer to an enabled key manager " +
-            "provider.");
+            "provider");
     registerMessage(MSGID_JMX_CONNHANDLER_CANNOT_DETERMINE_KEYMANAGER_DN,
             "An unexpected error occurred while processing the " +
             ATTR_KEYMANAGER_DN + " attribute in configuration " +
             "entry %s, which is used to specify the DN of the key manager " +
-            "provider to use for accepting SSL/TSL connections:  %s.");
+            "provider to use for accepting SSL/TSL connections:  %s");
 
 
     registerMessage(MSGID_PWPOLICYREQ_CONTROL_HAS_VALUE,
                     "Cannot decode the provided control as a password policy " +
                     "request control because the provided control had a " +
                     "value but the password policy request control should " +
-                    "not have a value.");
+                    "not have a value");
 
 
     registerMessage(MSGID_PWPOLICYRES_NO_CONTROL_VALUE,
                     "Cannot decode the provided password policy response " +
-                    "control because it does not have a value.");
+                    "control because it does not have a value");
     registerMessage(MSGID_PWPOLICYRES_INVALID_WARNING_TYPE,
                     "Cannot decode the provided password policy response " +
                     "control because the warning element has an invalid " +
-                    "type of %s.");
+                    "type of %s");
     registerMessage(MSGID_PWPOLICYRES_INVALID_ERROR_TYPE,
                     "Cannot decode the provided password policy response " +
                     "control because the error element has an invalid type " +
-                    "of %d.");
+                    "of %d");
     registerMessage(MSGID_PWPOLICYRES_INVALID_ELEMENT_TYPE,
                     "Cannot decode the provided password policy response " +
                     "control because the value sequence has an element with " +
-                    "an invalid type of %s.");
+                    "an invalid type of %s");
     registerMessage(MSGID_PWPOLICYRES_DECODE_ERROR,
                     "Cannot decode the provided password policy response " +
-                    "control:  %s.");
+                    "control:  %s");
 
 
     registerMessage(MSGID_PWPERRTYPE_DESCRIPTION_PASSWORD_EXPIRED,
@@ -6243,32 +6243,32 @@
                     "Cannot decode the provided control as an account " +
                     "availability request control because the provided " +
                     "control had a value but the account availability " +
-                    "request control should not have a value.");
+                    "request control should not have a value");
 
 
     registerMessage(MSGID_ACCTUSABLERES_NO_CONTROL_VALUE,
                     "Cannot decode the provided account availability " +
-                    "response control because it does not have a value.");
+                    "response control because it does not have a value");
     registerMessage(MSGID_ACCTUSABLERES_UNKNOWN_UNAVAILABLE_TYPE,
                     "The account availability response control indicated " +
                     "that the account was unavailable but had an unknown " +
-                    "unavailable element type of %s.");
+                    "unavailable element type of %s");
     registerMessage(MSGID_ACCTUSABLERES_UNKNOWN_VALUE_ELEMENT_TYPE,
                     "The account availability response control had an " +
-                    "unknown ACCOUNT_USABLE_RESPONSE element type of %s.");
+                    "unknown ACCOUNT_USABLE_RESPONSE element type of %s");
     registerMessage(MSGID_ACCTUSABLERES_DECODE_ERROR,
             "Cannot decode the provided account availability " +
-            "response control:  %s.");
+            "response control:  %s");
     registerMessage(MSGID_ADDRESSMASK_PREFIX_DECODE_ERROR,
             "Cannot decode the provided address mask prefix because an" +
             "invalid value was specified. The permitted values for IPv4" +
             "are 0 to32 and for IPv6 0 to128");
     registerMessage(MSGID_ADDRESSMASK_WILDCARD_DECODE_ERROR,
             "Cannot decode the provided address mask because an prefix mask"+
-            "was specified with an wild card \"*\" match character.");
+            "was specified with an wild card \"*\" match character");
     registerMessage(MSGID_ADDRESSMASK_FORMAT_DECODE_ERROR,
             "Cannot decode the provided address mask because the it has an" +
-            "invalid format.");
+            "invalid format");
   }
 }
 
diff --git a/opends/src/server/org/opends/server/messages/SchemaMessages.java b/opends/src/server/org/opends/server/messages/SchemaMessages.java
index 942ee92..a3cd450 100644
--- a/opends/src/server/org/opends/server/messages/SchemaMessages.java
+++ b/opends/src/server/org/opends/server/messages/SchemaMessages.java
@@ -3125,129 +3125,129 @@
                     "Unable to retrieve approximate matching rule %s used as " +
                     "the default for the %s attribute syntax.  Approximate " +
                     "matching will not be allowed by default for attributes " +
-                    "with this syntax.");
+                    "with this syntax");
     registerMessage(MSGID_ATTR_SYNTAX_UNKNOWN_EQUALITY_MATCHING_RULE,
                     "Unable to retrieve equality matching rule %s used as " +
                     "the default for the %s attribute syntax.  Equality " +
                     "matching will not be allowed by default for attributes " +
-                    "with this syntax.");
+                    "with this syntax");
     registerMessage(MSGID_ATTR_SYNTAX_UNKNOWN_ORDERING_MATCHING_RULE,
                     "Unable to retrieve ordering matching rule %s used as " +
                     "the default for the %s attribute syntax.  Ordering " +
                     "matches will not be allowed by default for attributes " +
-                    "with this syntax.");
+                    "with this syntax");
     registerMessage(MSGID_ATTR_SYNTAX_UNKNOWN_SUBSTRING_MATCHING_RULE,
                     "Unable to retrieve substring matching rule %s used as " +
                     "the default for the %s attribute syntax.  Substring " +
                     "matching will not be allowed by default for attributes " +
-                    "with this syntax.");
+                    "with this syntax");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_ILLEGAL_BOOLEAN,
                     "The provided value %s is not allowed for attributes " +
                     "with a Boolean syntax.  The only allowed values are " +
-                    "'TRUE' and 'FALSE'.");
+                    "'TRUE' and 'FALSE'");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_BIT_STRING_TOO_SHORT,
                     "The provided value %s is too short to be a valid bit " +
                     "string.  A bit string must be a series of binary digits " +
                     "surrounded by single quotes and followed by a capital " +
-                    "letter B.");
+                    "letter B");
     registerMessage(MSGID_ATTR_SYNTAX_BIT_STRING_NOT_QUOTED,
                     "The provided value %s is not a valid bit string because " +
                     "it is not surrounded by single quotes and followed by a " +
-                    "capital letter B.");
+                    "capital letter B");
     registerMessage(MSGID_ATTR_SYNTAX_BIT_STRING_INVALID_BIT,
                     "The provided value %s is not a valid bit string because " +
-                    "%s is not a valid binary digit.");
+                    "%s is not a valid binary digit");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_COUNTRY_STRING_INVALID_LENGTH,
                     "The provided value %s is not a valid country string " +
-                    "because the length is not exactly two characters.");
+                    "because the length is not exactly two characters");
     registerMessage(MSGID_ATTR_SYNTAX_COUNTRY_STRING_NOT_PRINTABLE,
                     "The provided value %s is not a valid country string " +
                     "because it contains one or more non-printable " +
-                    "characters.");
+                    "characters");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_DELIVERY_METHOD_NO_ELEMENTS,
                     "The provided value %s is not a valid delivery method " +
-                    "value because it does not contain any elements.");
+                    "value because it does not contain any elements");
     registerMessage(MSGID_ATTR_SYNTAX_DELIVERY_METHOD_INVALID_ELEMENT,
                     "The provided value %s is not a valid delivery method " +
-                    "value because %s is not a valid method.");
+                    "value because %s is not a valid method");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_GENERALIZED_TIME_TOO_SHORT,
                     "The provided value %s is too short to be a valid " +
-                    "generalized time value.");
+                    "generalized time value");
     registerMessage(MSGID_ATTR_SYNTAX_GENERALIZED_TIME_INVALID_YEAR,
                     "The provided value %s is not a valid generalized time " +
                     "value because the %s character is not allowed in the " +
-                    "century or year specification.");
+                    "century or year specification");
     registerMessage(MSGID_ATTR_SYNTAX_GENERALIZED_TIME_INVALID_MONTH,
                     "The provided value %s is not a valid generalized time " +
-                    "value because %s is not a valid month specification.");
+                    "value because %s is not a valid month specification");
     registerMessage(MSGID_ATTR_SYNTAX_GENERALIZED_TIME_INVALID_DAY,
                     "The provided value %s is not a valid generalized time " +
-                    "value because %s is not a valid day specification.");
+                    "value because %s is not a valid day specification");
     registerMessage(MSGID_ATTR_SYNTAX_GENERALIZED_TIME_INVALID_HOUR,
                     "The provided value %s is not a valid generalized time " +
-                    "value because %s is not a valid hour specification.");
+                    "value because %s is not a valid hour specification");
     registerMessage(MSGID_ATTR_SYNTAX_GENERALIZED_TIME_INVALID_MINUTE,
                     "The provided value %s is not a valid generalized time " +
-                    "value because %s is not a valid minute specification.");
+                    "value because %s is not a valid minute specification");
     registerMessage(MSGID_ATTR_SYNTAX_GENERALIZED_TIME_INVALID_SECOND,
                     "The provided value %s is not a valid generalized time " +
-                    "value because %s is not a valid second specification.");
+                    "value because %s is not a valid second specification");
     registerMessage(MSGID_ATTR_SYNTAX_GENERALIZED_TIME_INVALID_SUBSECOND,
                     "The provided value %s is not a valid generalized time " +
                     "value because the sub-second component is not valid " +
-                    "(between 1 and 3 numeric digits).");
+                    "(between 1 and 3 numeric digits)");
     registerMessage(MSGID_ATTR_SYNTAX_GENERALIZED_TIME_LONG_SUBSECOND,
                     "The provided value %s is not a valid generalized time " +
                     "value because the sub-second value may not contain more " +
-                    "than three digits.");
+                    "than three digits");
     registerMessage(MSGID_ATTR_SYNTAX_GENERALIZED_TIME_INVALID_OFFSET,
                     "The provided value %s is not a valid generalized time " +
-                    "value because %s is not a valid GMT offset.");
+                    "value because %s is not a valid GMT offset");
     registerMessage(MSGID_ATTR_SYNTAX_GENERALIZED_TIME_INVALID_CHAR,
                     "The provided value %s is not a valid generalized time " +
                     "value because it contains an invalid character %s at " +
-                    "position %d.");
+                    "position %d");
     registerMessage(MSGID_ATTR_SYNTAX_GENERALIZED_TIME_CANNOT_PARSE,
                     "The provided value %s could not be parsed as a valid " +
-                    "generalized time:  %s.");
+                    "generalized time:  %s");
     registerMessage(MSGID_ATTR_SYNTAX_GENERALIZED_TIME_NORMALIZE_FAILURE,
                     "An unexpected error occurred while trying to normalize " +
-                    "value %s as a generalized time value:  %s.");
+                    "value %s as a generalized time value:  %s");
     registerMessage(MSGID_ATTR_SYNTAX_GENERALIZED_TIME_ILLEGAL_FRACTION_CHAR,
                     "The provided value %s is not a valid generalized time " +
                     "value because it contains illegal character %s in the " +
-                    "fraction component.");
+                    "fraction component");
     registerMessage(MSGID_ATTR_SYNTAX_GENERALIZED_TIME_EMPTY_FRACTION,
                     "The provided value %s is not a valid generalized time " +
                     "value because it does not contain at least one digit " +
-                    "after the period to use as the fractional component.");
+                    "after the period to use as the fractional component");
     registerMessage(MSGID_ATTR_SYNTAX_GENERALIZED_TIME_NO_TIME_ZONE_INFO,
                     "The provided value %s is not a valid generalized time " +
                     "value because it does not end with 'Z' or a time zone " +
-                    "offset.");
+                    "offset");
     registerMessage(MSGID_ATTR_SYNTAX_GENERALIZED_TIME_ILLEGAL_TIME,
                     "The provided value %s is not a valid generalized time " +
                     "value because it represents an invalid time (e.g., a " +
-                    "date that does not exist):  %s.");
+                    "date that does not exist):  %s");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_DN_INVALID,
                     "The provided value %s could not be parsed as a valid " +
-                    "distinguished name:  %s.");
+                    "distinguished name:  %s");
     registerMessage(MSGID_ATTR_SYNTAX_DN_END_WITH_COMMA,
                     "The provided value %s could not be parsed as a valid " +
                     "distinguished name because the last non-space character " +
-                    "was a comma or semicolon.");
+                    "was a comma or semicolon");
     registerMessage(MSGID_ATTR_SYNTAX_DN_ATTR_START_WITH_DIGIT,
                     "The provided value %s could not be parsed as a valid " +
                     "distinguished name because numeric digit %s is not " +
@@ -3255,296 +3255,296 @@
     registerMessage(MSGID_ATTR_SYNTAX_DN_ATTR_ILLEGAL_CHAR,
                     "The provided value %s could not be parsed as a valid " +
                     "distinguished name because character %s at position %d " +
-                    "is not allowed in an attribute name.");
+                    "is not allowed in an attribute name");
     registerMessage(MSGID_ATTR_SYNTAX_DN_ATTR_ILLEGAL_UNDERSCORE_CHAR,
                     "The provided value %s could not be parsed as a valid " +
                     "distinguished name because the underscore character is " +
                     "not allowed in an attribute name unless the %s " +
-                    " configuration option is enabled.");
+                    " configuration option is enabled");
     registerMessage(MSGID_ATTR_SYNTAX_DN_ATTR_ILLEGAL_INITIAL_DASH,
                     "The provided value %s could not be parsed as a valid " +
                     "distinguished name because the hyphen character is not " +
-                    "allowed as the first character of an attribute name.");
+                    "allowed as the first character of an attribute name");
     registerMessage(MSGID_ATTR_SYNTAX_DN_ATTR_ILLEGAL_INITIAL_UNDERSCORE,
                     "The provided value %s could not be parsed as a valid " +
                     "distinguished name because the underscore character is " +
                     "not allowed as the first character of an attribute name " +
-                    "even if the %s configuration option is enabled.");
+                    "even if the %s configuration option is enabled");
     registerMessage(MSGID_ATTR_SYNTAX_DN_ATTR_ILLEGAL_INITIAL_DIGIT,
                     "The provided value %s could not be parsed as a valid " +
                     "distinguished name because the digit %s is not allowed " +
                     "allowed as the first character of an attribute name " +
                     "unless the name is specified as an OID or the %s " +
-                    " configuration option is enabled.");
+                    " configuration option is enabled");
     registerMessage(MSGID_ATTR_SYNTAX_DN_ATTR_NO_NAME,
                     "The provided value %s could not be parsed as a valid " +
                     "distinguished name because it contained an RDN " +
-                    "containing an empty attribute name.");
+                    "containing an empty attribute name");
     registerMessage(MSGID_ATTR_SYNTAX_DN_ATTR_ILLEGAL_PERIOD,
                     "The provided value %s could not be parsed as a valid " +
                     "distinguished name because the parsed attribute name %s " +
                     "included a period but that name did not appear to be a " +
-                    "valid OID.");
+                    "valid OID");
     registerMessage(MSGID_ATTR_SYNTAX_DN_END_WITH_ATTR_NAME,
                     "The provided value %s could not be parsed as a valid " +
                     "distinguished name because the last non-space character " +
-                    "was part of the attribute name %s.");
+                    "was part of the attribute name %s");
     registerMessage(MSGID_ATTR_SYNTAX_DN_NO_EQUAL,
                     "The provided value %s could not be parsed as a valid " +
                     "distinguished name because the next non-space character " +
                     "after attribute name %s should have been an equal sign " +
-                    "but instead was %s.");
+                    "but instead was %s");
     registerMessage(MSGID_ATTR_SYNTAX_DN_INVALID_CHAR,
                     "The provided value %s could not be parsed as a valid " +
                     "distinguished name because character %s at position %d " +
-                    "is not valid.");
+                    "is not valid");
     registerMessage(MSGID_ATTR_SYNTAX_DN_HEX_VALUE_TOO_SHORT,
                     "The provided value %s could not be parsed as a valid " +
                     "distinguished name because an attribute value started " +
                     "with an octothorpe (#) but was not followed by a " +
-                    "positive multiple of two hexadecimal digits.");
+                    "positive multiple of two hexadecimal digits");
     registerMessage(MSGID_ATTR_SYNTAX_DN_INVALID_HEX_DIGIT,
                     "The provided value %s could not be parsed as a valid " +
                     "distinguished name because an attribute value started " +
                     "with an octothorpe (#) but contained a character %s " +
-                    "that was not a valid hexadecimal digit.");
+                    "that was not a valid hexadecimal digit");
     registerMessage(MSGID_ATTR_SYNTAX_DN_ATTR_VALUE_DECODE_FAILURE,
                     "The provided value %s could not be parsed as a valid " +
                     "distinguished name because an unexpected failure " +
                     "occurred while attempting to parse an attribute value " +
-                    "from one of the RDN components:  %s.");
+                    "from one of the RDN components:  %s");
     registerMessage(MSGID_ATTR_SYNTAX_DN_UNMATCHED_QUOTE,
                     "The provided value %s could not be parsed as a valid " +
                     "distinguished name because one of the RDN components " +
                     "included a quoted value that did not have a " +
-                    "corresponding closing quotation mark.");
+                    "corresponding closing quotation mark");
     registerMessage(MSGID_ATTR_SYNTAX_DN_ESCAPED_HEX_VALUE_INVALID,
                     "The provided value %s could not be parsed as a valid " +
                     "distinguished name because one of the RDN components " +
                     "included a value with an escaped hexadecimal digit that " +
-                    "was not followed by a second hexadecimal digit.");
+                    "was not followed by a second hexadecimal digit");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_INTEGER_INITIAL_ZERO,
                     "The provided value %s could not be parsed as a valid " +
                     "integer because the first digit may not be zero unless " +
-                    "it is the only digit.");
+                    "it is the only digit");
     registerMessage(MSGID_ATTR_SYNTAX_INTEGER_MISPLACED_DASH,
                     "The provided value %s could not be parsed as a valid " +
                     "integer because the dash may only appear if it is the " +
                     "first character of the value followed by one or more " +
-                    "digits.");
+                    "digits");
     registerMessage(MSGID_ATTR_SYNTAX_INTEGER_INVALID_CHARACTER,
                     "The provided value %s could not be parsed as a valid " +
                     "integer because character %s at position %d is not " +
-                    "allowed in an integer value.");
+                    "allowed in an integer value");
     registerMessage(MSGID_ATTR_SYNTAX_INTEGER_EMPTY_VALUE,
                     "The provided value %s could not be parsed as a valid " +
-                    "integer because it did not contain any digits.");
+                    "integer because it did not contain any digits");
     registerMessage(MSGID_ATTR_SYNTAX_INTEGER_DASH_NEEDS_VALUE,
                     "The provided value %s could not be parsed as a valid " +
                     "integer because it contained only a dash not followed " +
-                    "by an integer value.");
+                    "by an integer value");
     registerMessage(MSGID_ATTR_SYNTAX_ILLEGAL_INTEGER,
                     "The provided value %s is not allowed for attributes " +
-                    "with a Integer syntax.");
+                    "with a Integer syntax");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_OID_NO_VALUE,
                     "The provided value could not be parsed as a valid OID " +
-                    "because it did not contain any characters.");
+                    "because it did not contain any characters");
     registerMessage(MSGID_ATTR_SYNTAX_OID_ILLEGAL_CHARACTER,
                     "The provided value %s could not be parsed as a valid " +
-                    "OID because it had an illegal character at position %d.");
+                    "OID because it had an illegal character at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_OID_CONSECUTIVE_PERIODS,
                     "The provided value %s could not be parsed as a valid " +
                     "OID because it had two consecutive periods at or near " +
-                    "position %d.");
+                    "position %d");
     registerMessage(MSGID_ATTR_SYNTAX_OID_ENDS_WITH_PERIOD,
                     "The provided value %s could not be parsed as a valid " +
-                    "OID because it ends with a period.");
+                    "OID because it ends with a period");
     registerMessage(MSGID_ATTR_SYNTAX_OID_INVALID_VALUE,
                     "The provided value %s could not be parsed as a valid " +
-                    "OID:  %s.");
+                    "OID:  %s");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_EMPTY_VALUE,
                     "The provided value could not be parsed as a valid " +
                     "attribute type description because it was empty or " +
-                    "contained only whitespace.");
+                    "contained only whitespace");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_EXPECTED_OPEN_PARENTHESIS,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute type description because an open parenthesis " +
                     "was expected at position %d but instead a '%s' " +
-                    "character was found.");
+                    "character was found");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_TRUNCATED_VALUE,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute type description because the end of the " +
                     "value was encountered while the Directory Server " +
-                    "expected more data to be provided.");
+                    "expected more data to be provided");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_DOUBLE_PERIOD_IN_NUMERIC_OID,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute type description because the numeric OID " +
-                    "contained two consecutive periods at position %d.");
+                    "contained two consecutive periods at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_ILLEGAL_CHAR_IN_NUMERIC_OID,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute type description because the numeric OID " +
-                    "contained an illegal character %s at position %d.");
+                    "contained an illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_ILLEGAL_CHAR_IN_STRING_OID,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute type description because the non-numeric OID " +
-                    "contained an illegal character %s at position %d.");
+                    "contained an illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_ILLEGAL_CHAR,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute type description because it contained an " +
-                    "illegal character %s at position %d.");
+                    "illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_UNEXPECTED_CLOSE_PARENTHESIS,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute type description because it contained an " +
-                    "unexpected closing parenthesis at position %d.");
+                    "unexpected closing parenthesis at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_EXPECTED_QUOTE,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute type description because a single quote was " +
                     "expected as the first non-blank character following " +
-                    "token %s.  However, the character %s was found instead.");
+                    "token %s.  However, the character %s was found instead");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_UNKNOWN_SUPERIOR_TYPE,
                     "The definition for the attribute type with OID %s " +
                     "declared a superior type with an OID of %s.  No " +
                     "attribute type with this OID exists in the server " +
-                    "schema.");
+                    "schema");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_UNKNOWN_APPROXIMATE_MR,
                     "The definition for the attribute type with OID %s " +
                     "declared that approximate matching should be performed " +
                     "using the matching rule \"%s\".  No such approximate " +
                     "matching rule is configured for use in the Directory " +
-                    "Server.");
+                    "Server");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_UNKNOWN_EQUALITY_MR,
                     "The definition for the attribute type with OID %s " +
                     "declared that equality matching should be performed " +
                     "using the matching rule \"%s\".  No such equality " +
                     "matching rule is configured for use in the Directory " +
-                    "Server.");
+                    "Server");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_UNKNOWN_ORDERING_MR,
                     "The definition for the attribute type with OID %s " +
                     "declared that ordering matching should be performed " +
                     "using the matching rule \"%s\".  No such ordering " +
                     "matching rule is configured for use in the Directory " +
-                    "Server.");
+                    "Server");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_UNKNOWN_SUBSTRING_MR,
                     "The definition for the attribute type with OID %s " +
                     "declared that substring matching should be performed " +
                     "using the matching rule \"%s\".  No such substring " +
                     "matching rule is configured for use in the Directory " +
-                    "Server.");
+                    "Server");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_UNKNOWN_SYNTAX,
                     "The definition for the attribute type with OID %s " +
                     "declared that it should have a syntax with OID %s.  No " +
                     "such syntax is configured for use in the Directory " +
-                    "Server.");
+                    "Server");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_INVALID_ATTRIBUTE_USAGE,
                     "The definition for the attribute type with OID %s " +
                     "declared that it should have an attribute usage of " +
-                    "%s.  This is an invalid usage.");
+                    "%s.  This is an invalid usage");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_INVALID_SUPERIOR_USAGE,
                     "The definition for attribute type %s is invalid because " +
                     "its attribute usage %s is not the same as the usage for " +
-                    "its superior type %s.");
+                    "its superior type %s");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_COLLECTIVE_FROM_NONCOLLECTIVE,
                     "The definition for attribute type %s is invalid because " +
                     "it is defined as a collective type but the superior " +
-                    "type %s is not collective.");
+                    "type %s is not collective");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_NONCOLLECTIVE_FROM_COLLECTIVE,
                     "The definition for attribute type %s is invalid because " +
                     "it is not defined as a collective type but the superior " +
-                    "type %s is collective.");
+                    "type %s is collective");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_COLLECTIVE_IS_OPERATIONAL,
                     "The definition for attribute type %s is invalid because " +
                     "it is declared COLLECTIVE but does not have a usage " +
-                    "of userApplications.");
+                    "of userApplications");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_NO_USER_MOD_NOT_OPERATIONAL,
                     "The definition for attribute type %s is invalid because " +
                     "it is declared NO-USER-MODIFICATION but does not have " +
-                    "an operational usage.");
+                    "an operational usage");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRTYPE_EXPECTED_QUOTE_AT_POS,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute type description because a single quote was " +
                     "expected at position %d but the character %s was found " +
-                    "instead.");
+                    "instead");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_OBJECTCLASS_EMPTY_VALUE,
                     "The provided value could not be parsed as a valid " +
                     "objectclass description because it was empty or " +
-                    "contained only whitespace.");
+                    "contained only whitespace");
     registerMessage(MSGID_ATTR_SYNTAX_OBJECTCLASS_EXPECTED_OPEN_PARENTHESIS,
                     "The provided value \"%s\" could not be parsed as an " +
                     "objectclass description because an open parenthesis was " +
                     "expected at position %d but instead a '%s' character " +
-                    "was found.");
+                    "was found");
     registerMessage(MSGID_ATTR_SYNTAX_OBJECTCLASS_TRUNCATED_VALUE,
                     "The provided value \"%s\" could not be parsed as an " +
                     "objectclass description because the end of the value " +
                     "was encountered while the Directory Server expected " +
-                    "more data to be provided.");
+                    "more data to be provided");
     registerMessage(MSGID_ATTR_SYNTAX_OBJECTCLASS_DOUBLE_PERIOD_IN_NUMERIC_OID,
                     "The provided value \"%s\" could not be parsed as an " +
                     "objectclass description because the numeric OID " +
-                    "contained two consecutive periods at position %d.");
+                    "contained two consecutive periods at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_OBJECTCLASS_ILLEGAL_CHAR_IN_NUMERIC_OID,
                     "The provided value \"%s\" could not be parsed as an " +
                     "objectclass description because the numeric OID " +
-                    "contained an illegal character %s at position %d.");
+                    "contained an illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_OBJECTCLASS_ILLEGAL_CHAR_IN_STRING_OID,
                     "The provided value \"%s\" could not be parsed as an " +
                     "objectclass description because the non-numeric OID " +
-                    "contained an illegal character %s at position %d.");
+                    "contained an illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_OBJECTCLASS_ILLEGAL_CHAR,
                     "The provided value \"%s\" could not be parsed as an " +
                     "objectclass description because it contained an illegal " +
-                    "character %s at position %d.");
+                    "character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_OBJECTCLASS_UNEXPECTED_CLOSE_PARENTHESIS,
                     "The provided value \"%s\" could not be parsed as an " +
                     "objectclass description because it contained an " +
-                    "unexpected closing parenthesis at position %d.");
+                    "unexpected closing parenthesis at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_OBJECTCLASS_EXPECTED_QUOTE,
                     "The provided value \"%s\" could not be parsed as an " +
                     "objectclass description because a single quote was " +
                     "expected as the first non-blank character following " +
-                    "token %s.  However, the character %s was found instead.");
+                    "token %s.  However, the character %s was found instead");
     registerMessage(MSGID_ATTR_SYNTAX_OBJECTCLASS_UNKNOWN_SUPERIOR_CLASS,
                     "The definition for the objectclass with OID %s declared " +
                     "a superior objectclass with an OID of %s.  No " +
-                    "objectclass with this OID exists in the server schema.");
+                    "objectclass with this OID exists in the server schema");
     registerMessage(MSGID_ATTR_SYNTAX_OBJECTCLASS_EXPECTED_QUOTE_AT_POS,
                     "The provided value \"%s\" could not be parsed as an " +
                     "objectclass description because a single quote was " +
                     "expected at position %d but the character %s was found " +
-                    "instead.");
+                    "instead");
     registerMessage(MSGID_ATTR_SYNTAX_OBJECTCLASS_UNKNOWN_REQUIRED_ATTR,
                     "The definition for the objectclass with OID %s declared " +
                     "that it should include required attribute \"%s\".  No " +
                     "attribute type matching this name or OID exists in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_ATTR_SYNTAX_OBJECTCLASS_UNKNOWN_OPTIONAL_ATTR,
                     "The definition for the objectclass with OID %s declared " +
                     "that it should include optional attribute \"%s\".  No " +
                     "attribute type matching this name or OID exists in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_ATTR_SYNTAX_OBJECTCLASS_INVALID_SUPERIOR_TYPE,
                     "The definition for objectclass %s is invalid because it " +
                     "has an objectclass type of %s but this is incompatible " +
-                    "with the objectclass type %s for the superior class %s.");
+                    "with the objectclass type %s for the superior class %s");
     registerMessage(MSGID_ATTR_SYNTAX_OBJECTCLASS_STRUCTURAL_SUPERIOR_NOT_TOP,
                     "The definition for objectclass %s is invalid because " +
                     "it is defined as a structural class but its superior " +
-                    "chain does not include the \"top\" objectclass.");
+                    "chain does not include the \"top\" objectclass");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_IA5_ILLEGAL_CHARACTER,
                     "The provided value \"%s\" cannot be parsed as a valid " +
                     "IA5 string because it contains an illegal character " +
                     "\"%s\" that is not allowed in the IA5 (ASCII) character " +
-                    "set.");
+                    "set");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_TELEPHONE_DESCRIPTION_STRICT_MODE,
@@ -3554,652 +3554,652 @@
                     "enabled, then any value not in this format will be " +
                     "rejected.  If this is disabled, then any value will " +
                     "be accepted, but only the digits will be considered " +
-                    "when performing matching.");
+                    "when performing matching");
     registerMessage(MSGID_ATTR_SYNTAX_TELEPHONE_CANNOT_DETERMINE_STRICT_MODE,
                     "An error occurred while trying to retrieve attribute " +
                     ATTR_TELEPHONE_STRICT_MODE + " from configuration entry " +
                     "%s:  %s.  The Directory Server will not enforce strict " +
                     "compliance to the ITU-T E.123 format for telephone " +
-                    "number values.");
+                    "number values");
     registerMessage(MSGID_ATTR_SYNTAX_TELEPHONE_EMPTY,
                     "The provided value is not a valid telephone number " +
-                    "because it is empty or null.");
+                    "because it is empty or null");
     registerMessage(MSGID_ATTR_SYNTAX_TELEPHONE_NO_PLUS,
                     "The provided value \"%s\" is not a valid telephone " +
                     "number because strict telephone number checking is " +
                     "enabled and the value does not start with a plus sign " +
-                    "in compliance with the ITU-T E.123 specification.");
+                    "in compliance with the ITU-T E.123 specification");
     registerMessage(MSGID_ATTR_SYNTAX_TELEPHONE_ILLEGAL_CHAR,
                     "The provided value \"%s\" is not a valid telephone " +
                     "number because strict telephone number checking is " +
                     "enabled and the character %s at position %d is not " +
-                    "allowed by the ITU-T E.123 specification.");
+                    "allowed by the ITU-T E.123 specification");
     registerMessage(MSGID_ATTR_SYNTAX_TELEPHONE_NO_DIGITS,
                     "The provided value \"%s\" is not a valid telephone " +
-                    "number because it does not contain any numeric digits.");
+                    "number because it does not contain any numeric digits");
     registerMessage(MSGID_ATTR_SYNTAX_TELEPHONE_UPDATED_STRICT_MODE,
                     "The value of configuration attribute " +
                     ATTR_TELEPHONE_STRICT_MODE + ", which indicates whether " +
                     "to use strict telephone number syntax checking, has " +
-                    "been updated to %s in configuration entry %s.");
+                    "been updated to %s in configuration entry %s");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_NUMERIC_STRING_ILLEGAL_CHAR,
                     "The provided value \"%s\" is not a valid numeric string " +
                     "because it contained character %s at position %d that " +
-                    "was neither a digit nor a space.");
+                    "was neither a digit nor a space");
     registerMessage(MSGID_ATTR_SYNTAX_NUMERIC_STRING_EMPTY_VALUE,
                     "The provided value is not a valid numeric string " +
                     "because it did not contain any characters.  A numeric " +
                     "string value must contain at least one numeric digit " +
-                    "or space.");
+                    "or space");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_ATTRSYNTAX_EMPTY_VALUE,
                     "The provided value could not be parsed as a valid " +
                     "attribute syntax description because it was empty or " +
-                    "contained only whitespace.");
+                    "contained only whitespace");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRSYNTAX_EXPECTED_OPEN_PARENTHESIS,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute syntax description because an open " +
                     "parenthesis was expected at position %d but instead a " +
-                    "'%s' character was found.");
+                    "'%s' character was found");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRSYNTAX_TRUNCATED_VALUE,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute syntax description because the end of the " +
                     "value was encountered while the Directory Server " +
-                    "expected more data to be provided.");
+                    "expected more data to be provided");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRSYNTAX_DOUBLE_PERIOD_IN_NUMERIC_OID,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute syntax description because the numeric OID " +
-                    "contained two consecutive periods at position %d.");
+                    "contained two consecutive periods at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRSYNTAX_ILLEGAL_CHAR_IN_NUMERIC_OID,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute syntax description because the numeric OID " +
-                    "contained an illegal character %s at position %d.");
+                    "contained an illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRSYNTAX_ILLEGAL_CHAR_IN_STRING_OID,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute syntax description because the non-numeric " +
-                    "OID contained an illegal character %s at position %d.");
+                    "OID contained an illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRSYNTAX_UNEXPECTED_CLOSE_PARENTHESIS,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute syntax description because it contained an " +
-                    "unexpected closing parenthesis at position %d.");
+                    "unexpected closing parenthesis at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRSYNTAX_CANNOT_READ_DESC_TOKEN,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute syntax description because an unexpected " +
                     "error occurred while trying to read the \"DESC\" token " +
-                    "from the string at or near position %d:  %s.");
+                    "from the string at or near position %d:  %s");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRSYNTAX_TOKEN_NOT_DESC,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute syntax description because the \"DESC\" token " +
-                    "was expected but the string \"%s\" was found instead.");
+                    "was expected but the string \"%s\" was found instead");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRSYNTAX_CANNOT_READ_DESC_VALUE,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute syntax description because an unexpected " +
                     "error occurred while trying to read the value of the " +
                     "\"DESC\" token from the string at or near position %d:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRSYNTAX_EXPECTED_CLOSE_PARENTHESIS,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute syntax description because a close " +
                     "parenthesis was expected at position %d but instead a " +
-                    "'%s' character was found.");
+                    "'%s' character was found");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRSYNTAX_ILLEGAL_CHAR_AFTER_CLOSE,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute syntax description because an illegal " +
                     "character %s was found at position %d after the close " +
-                    "parenthesis.");
+                    "parenthesis");
     registerMessage(MSGID_ATTR_SYNTAX_ATTRSYNTAX_EXPECTED_QUOTE_AT_POS,
                     "The provided value \"%s\" could not be parsed as an " +
                     "attribute syntax description because a single quote was " +
                     "expected at position %d but the character %s was found " +
-                    "instead.");
+                    "instead");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_PRINTABLE_STRING_EMPTY_VALUE,
                     "The provided value could not be parsed as a printable " +
                     "string because it was null or empty.  A printable " +
-                    "string must contain at least one character.");
+                    "string must contain at least one character");
     registerMessage(MSGID_ATTR_SYNTAX_PRINTABLE_STRING_ILLEGAL_CHARACTER,
                     "The provided value \"%s\" could not be parsed as a " +
                     "printable string because it contained an invalid " +
-                    "character %s at position %d.");
+                    "character %s at position %d");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_SUBSTRING_ONLY_WILDCARD,
                     "The provided value \"*\" could not be parsed as a " +
                     "substring assertion because it consists only of a " +
                     "wildcard character and zero-length substrings are not " +
-                    "allowed.");
+                    "allowed");
     registerMessage(MSGID_ATTR_SYNTAX_SUBSTRING_CONSECUTIVE_WILDCARDS,
                     "The provided value \"%s\" could not be parsed as a " +
                     "substring assertion because it contains consecutive " +
                     "wildcard characters at position %d and zero-length " +
-                    "substrings are not allowed.");
+                    "substrings are not allowed");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_UTC_TIME_TOO_SHORT,
                     "The provided value %s is too short to be a valid UTC " +
-                    "time value.");
+                    "time value");
     registerMessage(MSGID_ATTR_SYNTAX_UTC_TIME_INVALID_YEAR,
                     "The provided value %s is not a valid UTC time value " +
                     "because the %s character is not allowed in the century " +
-                    "or year specification.");
+                    "or year specification");
     registerMessage(MSGID_ATTR_SYNTAX_UTC_TIME_INVALID_MONTH,
                     "The provided value %s is not a valid UTC time value " +
-                    "because %s is not a valid month specification.");
+                    "because %s is not a valid month specification");
     registerMessage(MSGID_ATTR_SYNTAX_UTC_TIME_INVALID_DAY,
                     "The provided value %s is not a valid UTC time value " +
-                    "because %s is not a valid day specification.");
+                    "because %s is not a valid day specification");
     registerMessage(MSGID_ATTR_SYNTAX_UTC_TIME_INVALID_HOUR,
                     "The provided value %s is not a valid UTC time value " +
-                    "because %s is not a valid hour specification.");
+                    "because %s is not a valid hour specification");
     registerMessage(MSGID_ATTR_SYNTAX_UTC_TIME_INVALID_MINUTE,
                     "The provided value %s is not a valid UTC time value " +
-                    "because %s is not a valid minute specification.");
+                    "because %s is not a valid minute specification");
     registerMessage(MSGID_ATTR_SYNTAX_UTC_TIME_INVALID_CHAR,
                     "The provided value %s is not a valid UTC time value " +
                     "because it contains an invalid character %s at position " +
-                    "%d.");
+                    "%d");
     registerMessage(MSGID_ATTR_SYNTAX_UTC_TIME_INVALID_SECOND,
                     "The provided value %s is not a valid UTC time value " +
-                    "because %s is not a valid second specification.");
+                    "because %s is not a valid second specification");
     registerMessage(MSGID_ATTR_SYNTAX_UTC_TIME_INVALID_OFFSET,
                     "The provided value %s is not a valid UTC time value " +
-                    "because %s is not a valid GMT offset.");
+                    "because %s is not a valid GMT offset");
     registerMessage(MSGID_ATTR_SYNTAX_UTC_TIME_CANNOT_PARSE,
                     "The provided value %s could not be parsed as a valid " +
-                    "UTC time:  %s.");
+                    "UTC time:  %s");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_DCR_EMPTY_VALUE,
                     "The provided value could not be parsed as a valid DIT " +
                     "content rule description because it was empty or " +
-                    "contained only whitespace.");
+                    "contained only whitespace");
     registerMessage(MSGID_ATTR_SYNTAX_DCR_EXPECTED_OPEN_PARENTHESIS,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "content rule description because an open parenthesis " +
                     "was expected at position %d but instead a '%s' " +
-                    "character was found.");
+                    "character was found");
     registerMessage(MSGID_ATTR_SYNTAX_DCR_TRUNCATED_VALUE,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "content rule description because the end of the value " +
                     "was encountered while the Directory Server expected " +
-                    "more data to be provided.");
+                    "more data to be provided");
     registerMessage(MSGID_ATTR_SYNTAX_DCR_DOUBLE_PERIOD_IN_NUMERIC_OID,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "content rule description because the numeric OID " +
-                    "contained two consecutive periods at position %d.");
+                    "contained two consecutive periods at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_DCR_ILLEGAL_CHAR_IN_NUMERIC_OID,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "content rule description because the numeric OID " +
-                    "contained an illegal character %s at position %d.");
+                    "contained an illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_DCR_ILLEGAL_CHAR_IN_STRING_OID,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "content rule description because the non-numeric OID " +
-                    "contained an illegal character %s at position %d.");
+                    "contained an illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_DCR_UNKNOWN_STRUCTURAL_CLASS,
                     "The DIT content rule \"%s\" is associated with a " +
                     "structural objectclass %s that is not defined in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_ATTR_SYNTAX_DCR_STRUCTURAL_CLASS_NOT_STRUCTURAL,
                     "The DIT content rule \"%s\" is associated with the " +
                     "objectclass with OID %s (%s).  This objectclass exists " +
                     "in the server schema but is defined as %s rather than " +
-                    "structural.");
+                    "structural");
     registerMessage(MSGID_ATTR_SYNTAX_DCR_UNEXPECTED_CLOSE_PARENTHESIS,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "content rule description because it contained an " +
-                    "unexpected closing parenthesis at position %d.");
+                    "unexpected closing parenthesis at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_DCR_ILLEGAL_CHAR,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "content rule description because it contained an " +
-                    "illegal character %s at position %d.");
+                    "illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_DCR_UNKNOWN_AUXILIARY_CLASS,
                     "The DIT content rule \"%s\" is associated with an " +
                     "auxiliary objectclass %s that is not defined in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_ATTR_SYNTAX_DCR_AUXILIARY_CLASS_NOT_AUXILIARY,
                     "The DIT content rule \"%s\" is associated with an " +
                     "auxiliary objectclass %s.  This objectclass exists " +
                     "in the server schema but is defined as %s rather than " +
-                    "auxiliary.");
+                    "auxiliary");
     registerMessage(MSGID_ATTR_SYNTAX_DCR_UNKNOWN_REQUIRED_ATTR,
                     "The DIT content rule \"%s\" is associated with a " +
                     "required attribute type %s that is not defined in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_ATTR_SYNTAX_DCR_UNKNOWN_OPTIONAL_ATTR,
                     "The DIT content rule \"%s\" is associated with an " +
                     "optional attribute type %s that is not defined in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_ATTR_SYNTAX_DCR_UNKNOWN_PROHIBITED_ATTR,
                     "The DIT content rule \"%s\" is associated with a " +
                     "prohibited attribute type %s that is not defined in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_ATTR_SYNTAX_DCR_PROHIBITED_REQUIRED_BY_STRUCTURAL,
                     "The DIT content rule \"%s\" is not valid because it " +
                     "prohibits the use of attribute type %s which is " +
-                    "required by the associated structural object class %s.");
+                    "required by the associated structural object class %s");
     registerMessage(MSGID_ATTR_SYNTAX_DCR_PROHIBITED_REQUIRED_BY_AUXILIARY,
                     "The DIT content rule \"%s\" is not valid because it " +
                     "prohibits the use of attribute type %s which is " +
-                    "required by the associated auxiliary object class %s.");
+                    "required by the associated auxiliary object class %s");
     registerMessage(MSGID_ATTR_SYNTAX_DCR_EXPECTED_QUOTE_AT_POS,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "content rule description because a single quote was " +
                     "expected at position %d but the %s character was found " +
-                    "instead.");
+                    "instead");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_NAME_FORM_EMPTY_VALUE,
                     "The provided value could not be parsed as a valid name " +
                     "form description because it was empty or contained only " +
-                    "whitespace.");
+                    "whitespace");
     registerMessage(MSGID_ATTR_SYNTAX_NAME_FORM_EXPECTED_OPEN_PARENTHESIS,
                     "The provided value \"%s\" could not be parsed as a name " +
                     "form description because an open parenthesis was " +
                     "expected at position %d but instead a '%s' character " +
-                    "was found.");
+                    "was found");
     registerMessage(MSGID_ATTR_SYNTAX_NAME_FORM_TRUNCATED_VALUE,
                     "The provided value \"%s\" could not be parsed as a name " +
                     "form description because the end of the value was " +
                     "encountered while the Directory Server expected more " +
-                    "data to be provided.");
+                    "data to be provided");
     registerMessage(MSGID_ATTR_SYNTAX_NAME_FORM_DOUBLE_PERIOD_IN_NUMERIC_OID,
                     "The provided value \"%s\" could not be parsed as a name " +
                     "form description because the numeric OID contained two " +
-                    "consecutive periods at position %d.");
+                    "consecutive periods at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_NAME_FORM_ILLEGAL_CHAR_IN_NUMERIC_OID,
                     "The provided value \"%s\" could not be parsed as a name " +
                     "form description because the numeric OID contained an " +
-                    "illegal character %s at position %d.");
+                    "illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_NAME_FORM_ILLEGAL_CHAR_IN_STRING_OID,
                     "The provided value \"%s\" could not be parsed as a name " +
                     "form description because the non-numeric OID contained " +
-                    "an illegal character %s at position %d.");
+                    "an illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_NAME_FORM_UNEXPECTED_CLOSE_PARENTHESIS,
                     "The provided value \"%s\" could not be parsed as a name " +
                     "form description because it contained an unexpected " +
-                    "closing parenthesis at position %d.");
+                    "closing parenthesis at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_NAME_FORM_ILLEGAL_CHAR,
                     "The provided value \"%s\" could not be parsed as a name " +
                     "form description because it contained an illegal " +
-                    "character %s at position %d.");
+                    "character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_NAME_FORM_UNKNOWN_STRUCTURAL_CLASS,
                     "The name form description \"%s\" is associated with a " +
                     "structural objectclass %s that is not defined in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_ATTR_SYNTAX_NAME_FORM_STRUCTURAL_CLASS_NOT_STRUCTURAL,
                     "The name form description \"%s\" is associated with the " +
                     "objectclass with OID %s (%s).  This objectclass exists " +
                     "in the server schema but is defined as %s rather than " +
-                    "structural.");
+                    "structural");
     registerMessage(MSGID_ATTR_SYNTAX_NAME_FORM_UNKNOWN_REQUIRED_ATTR,
                     "The definition for the name form with OID %s declared " +
                     "that it should include required attribute \"%s\".  No " +
                     "attribute type matching this name or OID exists in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_ATTR_SYNTAX_NAME_FORM_UNKNOWN_OPTIONAL_ATTR,
                     "The definition for the name form with OID %s declared " +
                     "that it should include optional attribute \"%s\".  No " +
                     "attribute type matching this name or OID exists in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_ATTR_SYNTAX_NAME_FORM_NO_STRUCTURAL_CLASS,
                     "The provided value \"%s\" could not be parsed as a name " +
                     "form description because it does not specify the " +
-                    "structural objectclass with which it is associated.");
+                    "structural objectclass with which it is associated");
     registerMessage(MSGID_ATTR_SYNTAX_NAME_FORM_EXPECTED_QUOTE_AT_POS,
                     "The provided value \"%s\" could not be parsed as a name " +
                     "form description because a single quote was expected at " +
-                    "position %d but the %s character was found instead.");
+                    "position %d but the %s character was found instead");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_MR_EMPTY_VALUE,
                     "The provided value could not be parsed as a valid " +
                     "matching rule description because it was empty or " +
-                    "contained only whitespace.");
+                    "contained only whitespace");
     registerMessage(MSGID_ATTR_SYNTAX_MR_EXPECTED_OPEN_PARENTHESIS,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule description because an open parenthesis " +
                     "was expected at position %d but instead a '%s' " +
-                    "character was found.");
+                    "character was found");
     registerMessage(MSGID_ATTR_SYNTAX_MR_TRUNCATED_VALUE,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule description because the end of the value " +
                     "was encountered while the Directory Server expected " +
-                    "more data to be provided.");
+                    "more data to be provided");
     registerMessage(MSGID_ATTR_SYNTAX_MR_DOUBLE_PERIOD_IN_NUMERIC_OID,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule description because the numeric OID " +
-                    "contained two consecutive periods at position %d.");
+                    "contained two consecutive periods at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_MR_ILLEGAL_CHAR_IN_NUMERIC_OID,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule description because the numeric OID " +
-                    "contained an illegal character %s at position %d.");
+                    "contained an illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_MR_ILLEGAL_CHAR_IN_STRING_OID,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule description because the non-numeric OID " +
-                    "contained an illegal character %s at position %d.");
+                    "contained an illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_MR_UNEXPECTED_CLOSE_PARENTHESIS,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule description because it contained an " +
-                    "unexpected closing parenthesis at position %d.");
+                    "unexpected closing parenthesis at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_MR_ILLEGAL_CHAR,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule description because it contained an " +
-                    "illegal character %s at position %d.");
+                    "illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_MR_UNKNOWN_SYNTAX,
                     "The matching rule description \"%s\" is associated with " +
                     "attribute syntax %s that is not defined in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_ATTR_SYNTAX_MR_NO_SYNTAX,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule description because it does not specify " +
-                    "the attribute syntax with which it is associated.");
+                    "the attribute syntax with which it is associated");
     registerMessage(MSGID_ATTR_SYNTAX_MR_EXPECTED_QUOTE_AT_POS,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule description because a single quote was " +
                     "expected at position %d but the %s character was found " +
-                    "instead.");
+                    "instead");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_MRUSE_EMPTY_VALUE,
                     "The provided value could not be parsed as a valid " +
                     "matching rule use description because it was empty or " +
-                    "contained only whitespace.");
+                    "contained only whitespace");
     registerMessage(MSGID_ATTR_SYNTAX_MRUSE_EXPECTED_OPEN_PARENTHESIS,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule use description because an open " +
                     "parenthesis was expected at position %d but instead a " +
-                    "'%s' character was found.");
+                    "'%s' character was found");
     registerMessage(MSGID_ATTR_SYNTAX_MRUSE_TRUNCATED_VALUE,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule use description because the end of the " +
                     "value was encountered while the Directory Server " +
-                    "expected more data to be provided.");
+                    "expected more data to be provided");
     registerMessage(MSGID_ATTR_SYNTAX_MRUSE_DOUBLE_PERIOD_IN_NUMERIC_OID,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule use description because the numeric OID " +
-                    "contained two consecutive periods at position %d.");
+                    "contained two consecutive periods at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_MRUSE_ILLEGAL_CHAR_IN_NUMERIC_OID,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule use description because the numeric OID " +
-                    "contained an illegal character %s at position %d.");
+                    "contained an illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_MRUSE_ILLEGAL_CHAR_IN_STRING_OID,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule use description because the non-numeric " +
-                    "OID contained an illegal character %s at position %d.");
+                    "OID contained an illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_MRUSE_UNKNOWN_MATCHING_RULE,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule use description because the specified " +
-                    "matching rule %s is unknown.");
+                    "matching rule %s is unknown");
     registerMessage(MSGID_ATTR_SYNTAX_MRUSE_UNEXPECTED_CLOSE_PARENTHESIS,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule use description because it contained an " +
-                    "unexpected closing parenthesis at position %d.");
+                    "unexpected closing parenthesis at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_MRUSE_ILLEGAL_CHAR,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule use description because it contained an " +
-                    "illegal character %s at position %d.");
+                    "illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_MRUSE_UNKNOWN_ATTR,
                     "The matching rule use description \"%s\" is associated " +
                     "with attribute type %s that is not defined in the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_ATTR_SYNTAX_MRUSE_NO_ATTR,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule description because it does not specify " +
                     "the set of attribute types that may be used with the " +
-                    "associated OID.");
+                    "associated OID");
     registerMessage(MSGID_ATTR_SYNTAX_MRUSE_EXPECTED_QUOTE_AT_POS,
                     "The provided value \"%s\" could not be parsed as a " +
                     "matching rule use description because a single quote " +
                     "was expected at position %d but the %s character was " +
-                    "found instead.");
+                    "found instead");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_DSR_EMPTY_VALUE,
                     "The provided value could not be parsed as a valid DIT " +
                     "structure rule description because it was empty or " +
-                    "contained only whitespace.");
+                    "contained only whitespace");
     registerMessage(MSGID_ATTR_SYNTAX_DSR_EXPECTED_OPEN_PARENTHESIS,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "structure rule description because an open parenthesis " +
                     "was expected at position %d but instead a '%s' " +
-                    "character was found.");
+                    "character was found");
     registerMessage(MSGID_ATTR_SYNTAX_DSR_TRUNCATED_VALUE,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "structure rule description because the end of the value " +
                     "was encountered while the Directory Server expected " +
-                    "more data to be provided.");
+                    "more data to be provided");
     registerMessage(MSGID_ATTR_SYNTAX_DSR_ILLEGAL_CHAR_IN_RULE_ID,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "structure rule description because the rule ID " +
-                    "contained an illegal character %s at position %d.");
+                    "contained an illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_DSR_UNEXPECTED_CLOSE_PARENTHESIS,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "structure rule description because it contained an " +
-                    "unexpected closing parenthesis at position %d.");
+                    "unexpected closing parenthesis at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_DSR_ILLEGAL_CHAR,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "structure rule description because it contained an " +
-                    "illegal character %s at position %d.");
+                    "illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_DSR_UNKNOWN_NAME_FORM,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "structure rule description because it referenced an " +
-                    "unknown name form %s.");
+                    "unknown name form %s");
     registerMessage(MSGID_ATTR_SYNTAX_DSR_UNKNOWN_RULE_ID,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "structure rule description because it referenced an " +
-                    "unknown rule ID %d for a superior DIT structure rule.");
+                    "unknown rule ID %d for a superior DIT structure rule");
     registerMessage(MSGID_ATTR_SYNTAX_DSR_NO_NAME_FORM,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "structure rule description because it did not specify " +
-                    "the name form for the rule.");
+                    "the name form for the rule");
     registerMessage(MSGID_ATTR_SYNTAX_DSR_EXPECTED_QUOTE_AT_POS,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "structure rule description because a single quote was " +
                     "expected at position %d but the %s character was found " +
-                    "instead.");
+                    "instead");
     registerMessage(MSGID_ATTR_SYNTAX_DSR_DOUBLE_PERIOD_IN_NUMERIC_OID,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "structure rule description because the numeric OID " +
-                    "contained two consecutive periods at position %d.");
+                    "contained two consecutive periods at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_DSR_ILLEGAL_CHAR_IN_NUMERIC_OID,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "structure rule description because the numeric OID " +
-                    "contained an illegal character %s at position %d.");
+                    "contained an illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_DSR_ILLEGAL_CHAR_IN_STRING_OID,
                     "The provided value \"%s\" could not be parsed as a DIT " +
                     "structure rule description because the non-numeric OID " +
-                    "contained an illegal character %s at position %d.");
+                    "contained an illegal character %s at position %d");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_TELEX_TOO_SHORT,
                     "The provided value \"%s\" is too short to be a valid " +
-                    "telex number value.");
+                    "telex number value");
     registerMessage(MSGID_ATTR_SYNTAX_TELEX_NOT_PRINTABLE,
                     "The provided value \"%s\" does not hold a valid telex " +
                     "number because a character %s at position %d was not " +
-                    "a valid printable string character.");
+                    "a valid printable string character");
     registerMessage(MSGID_ATTR_SYNTAX_TELEX_ILLEGAL_CHAR,
                     "The provided value \"%s\" does not hold a valid telex " +
                     "number because character %s at position %d was neither " +
                     "a valid printable string character nor a dollar sign to " +
-                    "separate the telex number components.");
+                    "separate the telex number components");
     registerMessage(MSGID_ATTR_SYNTAX_TELEX_TRUNCATED,
                     "The provided value \"%s\" does not hold a valid telex " +
                     "number because the end of the value was found before " +
-                    "three dollar-delimited printable strings could be read.");
+                    "three dollar-delimited printable strings could be read");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_FAXNUMBER_EMPTY,
                     "The provided value could not be parsed as a valid " +
-                    "facsimile telephone number because it was empty.");
+                    "facsimile telephone number because it was empty");
     registerMessage(MSGID_ATTR_SYNTAX_FAXNUMBER_NOT_PRINTABLE,
                     "The provided value \"%s\" could not be parsed as a " +
                     "valid facsimile telephone number because character %s " +
                     "at position %d was not a valid printable string " +
-                    "character.");
+                    "character");
     registerMessage(MSGID_ATTR_SYNTAX_FAXNUMBER_END_WITH_DOLLAR,
                     "The provided value \"%s\" could not be parsed as a " +
                     "valid facsimile telephone number because it ends with " +
                     "a dollar sign, but that dollar sign should have been " +
-                    "followed by a fax parameter.");
+                    "followed by a fax parameter");
     registerMessage(MSGID_ATTR_SYNTAX_FAXNUMBER_ILLEGAL_PARAMETER,
                     "The provided value \"%s\" could not be parsed as a " +
                     "valid facsimile telephone number because the string " +
                     "\"%s\" between positions %d and %d was not a valid fax " +
-                    "parameter.");
+                    "parameter");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_NAMEANDUID_INVALID_DN,
                     "The provided value \"%s\" could not be parsed as a " +
                     "valid name and optional UID value because an error " +
-                    "occurred while trying to parse the DN portion:  %s.");
+                    "occurred while trying to parse the DN portion:  %s");
     registerMessage(MSGID_ATTR_SYNTAX_NAMEANDUID_ILLEGAL_BINARY_DIGIT,
                     "The provided value \"%s\" could not be parsed as a " +
                     "valid name and optional UID value because the UID " +
                     "portion contained an illegal binary digit %s at " +
-                    "position %d.");
+                    "position %d");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_TELETEXID_EMPTY,
                     "The provided value could not be parsed as a valid " +
-                    "teletex terminal identifier because it was empty.");
+                    "teletex terminal identifier because it was empty");
     registerMessage(MSGID_ATTR_SYNTAX_TELETEXID_NOT_PRINTABLE,
                     "The provided value \"%s\" could not be parsed as a " +
                     "valid teletex terminal identifier because character %s " +
                     "at position %d was not a valid printable string " +
-                    "character.");
+                    "character");
     registerMessage(MSGID_ATTR_SYNTAX_TELETEXID_END_WITH_DOLLAR,
                     "The provided value \"%s\" could not be parsed as a " +
                     "valid teletex terminal identifier because it ends with " +
                     "a dollar sign, but that dollar sign should have been " +
-                    "followed by a TTX parameter.");
+                    "followed by a TTX parameter");
     registerMessage(MSGID_ATTR_SYNTAX_TELETEXID_PARAM_NO_COLON,
                     "The provided value \"%s\" could not be parsed as a " +
                     "valid teletex terminal identifier because the parameter " +
                     "string does not contain a colon to separate the name " +
-                    "from the value.");
+                    "from the value");
     registerMessage(MSGID_ATTR_SYNTAX_TELETEXID_ILLEGAL_PARAMETER,
                     "The provided value \"%s\" could not be parsed as a " +
                     "valid teletex terminal identifier because the string " +
-                    "\"%s\" is not a valid TTX parameter name.");
+                    "\"%s\" is not a valid TTX parameter name");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_OTHER_MAILBOX_EMPTY_VALUE,
                     "The provided value could not be parsed as an other " +
-                    "mailbox value because it was empty.");
+                    "mailbox value because it was empty");
     registerMessage(MSGID_ATTR_SYNTAX_OTHER_MAILBOX_NO_MBTYPE,
                     "The provided value \"%s\" could not be parsed as an " +
                     "other mailbox value because there was no mailbox type " +
-                    "before the dollar sign.");
+                    "before the dollar sign");
     registerMessage(MSGID_ATTR_SYNTAX_OTHER_MAILBOX_ILLEGAL_MBTYPE_CHAR,
                     "The provided value \"%s\" could not be parsed as an " +
                     "other mailbox value because the mailbox type contained " +
-                    "an illegal character %s at position %d.");
+                    "an illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_OTHER_MAILBOX_NO_MAILBOX,
                     "The provided value \"%s\" could not be parsed as an " +
                     "other mailbox value because there was no mailbox after " +
-                    "the dollar sign.");
+                    "the dollar sign");
     registerMessage(MSGID_ATTR_SYNTAX_OTHER_MAILBOX_ILLEGAL_MB_CHAR,
                     "The provided value \"%s\" could not be parsed as an " +
                     "other mailbox value because the mailbox contained an " +
-                    "illegal character %s at position %d.");
+                    "illegal character %s at position %d");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_GUIDE_NO_OC,
                     "The provided value \"%s\" could not be parsed as a " +
                     "guide value because it did not contain an objectclass " +
-                    "name or OID before the octothorpe (#) character.");
+                    "name or OID before the octothorpe (#) character");
     registerMessage(MSGID_ATTR_SYNTAX_GUIDE_ILLEGAL_CHAR,
                     "The provided value \"%s\" could not be parsed as a " +
                     "guide value because the criteria portion %s contained " +
-                    "an illegal character %s at position %d.");
+                    "an illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_GUIDE_MISSING_CLOSE_PAREN,
                     "The provided value \"%s\" could not be parsed as a " +
                     "guide value because the criteria portion %s did not " +
                     "contain a close parenthesis that corresponded to the " +
-                    "initial open parenthesis.");
+                    "initial open parenthesis");
     registerMessage(MSGID_ATTR_SYNTAX_GUIDE_INVALID_QUESTION_MARK,
                     "The provided value \"%s\" could not be parsed as a " +
                     "guide value because the criteria portion %s started " +
                     "with a question mark but was not followed by the string " +
-                    "\"true\" or \"false\".");
+                    "\"true\" or \"false\"");
     registerMessage(MSGID_ATTR_SYNTAX_GUIDE_NO_DOLLAR,
                     "The provided value \"%s\" could not be parsed as a " +
                     "guide value because the criteria portion %s did not " +
                     "contain a dollar sign to separate the attribute type " +
-                    "from the match type.");
+                    "from the match type");
     registerMessage(MSGID_ATTR_SYNTAX_GUIDE_NO_ATTR,
                     "The provided value \"%s\" could not be parsed as a " +
                     "guide value because the criteria portion %s did not " +
-                    "specify an attribute type before the dollar sign.");
+                    "specify an attribute type before the dollar sign");
     registerMessage(MSGID_ATTR_SYNTAX_GUIDE_NO_MATCH_TYPE,
                     "The provided value \"%s\" could not be parsed as a " +
                     "guide value because the criteria portion %s did not " +
-                    "specify a match type after the dollar sign.");
+                    "specify a match type after the dollar sign");
     registerMessage(MSGID_ATTR_SYNTAX_GUIDE_INVALID_MATCH_TYPE,
                     "The provided value \"%s\" could not be parsed as a " +
                     "guide value because the criteria portion %s had an " +
-                    "invalid match type starting at position %d.");
+                    "invalid match type starting at position %d");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_ENHANCEDGUIDE_NO_SHARP,
                     "The provided value \"%s\" could not be parsed as an " +
                     "enhanced guide value because it did not contain an " +
                     "octothorpe (#) character to separate the objectclass " +
-                    "from the criteria.");
+                    "from the criteria");
     registerMessage(MSGID_ATTR_SYNTAX_ENHANCEDGUIDE_NO_OC,
                     "The provided value \"%s\" could not be parsed as an " +
                     "enhanced guide value because it did not contain an " +
                     "objectclass name or OID before the octothorpe (#) " +
-                    "character.");
+                    "character");
     registerMessage(MSGID_ATTR_SYNTAX_ENHANCEDGUIDE_DOUBLE_PERIOD_IN_OC_OID,
                     "The provided value \"%s\" could not be parsed as an " +
                     "enhanced guide value because the numeric OID %s " +
                     "specifying the objectclass contained two consecutive " +
-                    "periods at position %d.");
+                    "periods at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_ENHANCEDGUIDE_ILLEGAL_CHAR_IN_OC_OID,
                     "The provided value \"%s\" could not be parsed as an " +
                     "enhanced guide value because the numeric OID %s " +
                     "specifying the objectclass contained an illegal " +
-                    "character %s at position %d.");
+                    "character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_ENHANCEDGUIDE_ILLEGAL_CHAR_IN_OC_NAME,
                     "The provided value \"%s\" could not be parsed as an " +
                     "enhanced guide value because the objectclass name %s " +
-                    "contained an illegal character %s at position %d.");
+                    "contained an illegal character %s at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_ENHANCEDGUIDE_NO_FINAL_SHARP,
                     "The provided value \"%s\" could not be parsed as an " +
                     "enhanced guide value because it did not have an " +
                     "octothorpe (#) character to separate the criteria from " +
-                    "the scope.");
+                    "the scope");
     registerMessage(MSGID_ATTR_SYNTAX_ENHANCEDGUIDE_NO_SCOPE,
                     "The provided value \"%s\" could not be parsed as an " +
                     "enhanced guide value because no scope was provided " +
-                    "after the final octothorpe (#) character.");
+                    "after the final octothorpe (#) character");
     registerMessage(MSGID_ATTR_SYNTAX_ENHANCEDGUIDE_INVALID_SCOPE,
                     "The provided value \"%s\" could not be parsed as an " +
                     "enhanced guide value because the specified scope %s " +
-                    "was invalid.");
+                    "was invalid");
     registerMessage(MSGID_ATTR_SYNTAX_ENHANCEDGUIDE_NO_CRITERIA,
                     "The provided value \"%s\" could not be parsed as an " +
                     "enhanced guide value because it did not specify any " +
-                    "criteria between the octothorpe (#) characters.");
+                    "criteria between the octothorpe (#) characters");
 
 
     registerMessage(MSGID_OMR_CASE_EXACT_COMPARE_CANNOT_NORMALIZE,
                     "An error occurred while attempting to compare two " +
                     "AttributeValue objects using the caseExactOrderingMatch " +
                     "matching rule because the normalized form of one of " +
-                    "those values could not be retrieved:  %s.");
+                    "those values could not be retrieved:  %s");
     registerMessage(MSGID_OMR_CASE_EXACT_COMPARE_INVALID_TYPE,
                     "An error occurred while attempting to compare two " +
                     "objects using the caseExactOrderingMatch matching rule " +
                     "because the objects were of an unsupported type %s.  " +
                     "Only byte arrays, ASN.1 octet strings, and attribute " +
-                    "value objects may be compared.");
+                    "value objects may be compared");
 
 
     registerMessage(MSGID_OMR_CASE_IGNORE_COMPARE_CANNOT_NORMALIZE,
@@ -4207,13 +4207,13 @@
                     "AttributeValue objects using the " +
                     "caseIgnoreOrderingMatch matching rule because the " +
                     "normalized form of one of those values could not be " +
-                    "retrieved:  %s.");
+                    "retrieved:  %s");
     registerMessage(MSGID_OMR_CASE_IGNORE_COMPARE_INVALID_TYPE,
                     "An error occurred while attempting to compare two " +
                     "objects using the caseIgnoreOrderingMatch matching rule " +
                     "because the objects were of an unsupported type %s.  " +
                     "Only byte arrays, ASN.1 octet strings, and attribute " +
-                    "value objects may be compared.");
+                    "value objects may be compared");
 
 
     registerMessage(MSGID_OMR_GENERALIZED_TIME_COMPARE_CANNOT_NORMALIZE,
@@ -4221,26 +4221,26 @@
                     "AttributeValue objects using the " +
                     "generalizedTimeOrderingMatch matching rule because the " +
                     "normalized form of one of those values could not be " +
-                    "retrieved:  %s.");
+                    "retrieved:  %s");
     registerMessage(MSGID_OMR_GENERALIZED_TIME_COMPARE_INVALID_TYPE,
                     "An error occurred while attempting to compare two " +
                     "objects using the generalizedTimeOrderingMatch matching " +
                     "rule because the objects were of an unsupported type " +
                     "%s.  Only byte arrays, ASN.1 octet strings, and " +
-                    "attribute value objects may be compared.");
+                    "attribute value objects may be compared");
 
 
     registerMessage(MSGID_OMR_INTEGER_COMPARE_CANNOT_NORMALIZE,
                     "An error occurred while attempting to compare two " +
                     "AttributeValue objects using the integerOrderingMatch " +
                     "matching rule because the normalized form of one of " +
-                    "those values could not be retrieved:  %s.");
+                    "those values could not be retrieved:  %s");
     registerMessage(MSGID_OMR_INTEGER_COMPARE_INVALID_TYPE,
                     "An error occurred while attempting to compare two " +
                     "objects using the integerOrderingMatch matching rule " +
                     "because the objects were of an unsupported type %s.  " +
                     "Only byte arrays, ASN.1 octet strings, and attribute " +
-                    "value objects may be compared.");
+                    "value objects may be compared");
 
 
     registerMessage(MSGID_OMR_NUMERIC_STRING_COMPARE_CANNOT_NORMALIZE,
@@ -4248,13 +4248,13 @@
                     "AttributeValue objects using the " +
                     "numericStringOrderingMatch matching rule because the " +
                     "normalized form of one of those values could not be " +
-                    "retrieved:  %s.");
+                    "retrieved:  %s");
     registerMessage(MSGID_OMR_NUMERIC_STRING_COMPARE_INVALID_TYPE,
                     "An error occurred while attempting to compare two " +
                     "objects using the numericStringOrderingMatch matching " +
                     "rule because the objects were of an unsupported type " +
                     "%s.  Only byte arrays, ASN.1 octet strings, and " +
-                    "attribute value objects may be compared.");
+                    "attribute value objects may be compared");
 
 
     registerMessage(MSGID_OMR_OCTET_STRING_COMPARE_CANNOT_NORMALIZE,
@@ -4262,26 +4262,26 @@
                     "AttributeValue objects using the " +
                     "octetStringOrderingMatch matching rule because the " +
                     "normalized form of one of those values could not be " +
-                    "retrieved:  %s.");
+                    "retrieved:  %s");
     registerMessage(MSGID_OMR_OCTET_STRING_COMPARE_INVALID_TYPE,
                     "An error occurred while attempting to compare two " +
                     "objects using the octetStringOrderingMatch matching " +
                     "rule because the objects were of an unsupported type " +
                     "%s.  Only byte arrays, ASN.1 octet strings, and " +
-                    "attribute value objects may be compared.");
+                    "attribute value objects may be compared");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_UUID_INVALID_LENGTH,
                     "The provided value \"%s\" has an invalid length for a " +
                     "UUID.  All UUID values must have a length of exactly 36 " +
-                    "bytes, but the provided value had a length of %d bytes.");
+                    "bytes, but the provided value had a length of %d bytes");
     registerMessage(MSGID_ATTR_SYNTAX_UUID_EXPECTED_DASH,
                     "The provided value \"%s\" should have had a dash at " +
-                    "position %d, but the character '%s' was found instead.");
+                    "position %d, but the character '%s' was found instead");
     registerMessage(MSGID_ATTR_SYNTAX_UUID_EXPECTED_HEX,
                     "The provided value \"%s\" should have had a hexadecimal " +
                     "digit at position %d, but the character '%s' was found " +
-                    "instead.");
+                    "instead");
 
 
     registerMessage(
@@ -4289,106 +4289,106 @@
          "Indicates whether attributes with the directory string syntax will " +
          "be allowed to have zero-length values.  This is technically not " +
          "allowed by the LDAP specifications, but it may be useful for " +
-         "backward compatibility with previous Directory Server releases.");
+         "backward compatibility with previous Directory Server releases");
     registerMessage(
          MSGID_ATTR_SYNTAX_DIRECTORYSTRING_CANNOT_DETERMINE_ZEROLENGTH,
          "An error occurred while trying to determine the value of the %s " +
          "configuration attribute, which indicates whether directory string " +
-         "attributes should be allowed to have zero-length values:  %s.");
+         "attributes should be allowed to have zero-length values:  %s");
     registerMessage(MSGID_ATTR_SYNTAX_DIRECTORYSTRING_INVALID_ZEROLENGTH_VALUE,
                     "The operation attempted to assign a zero-length value " +
-                    "to an attribute with the directory string syntax.");
+                    "to an attribute with the directory string syntax");
     registerMessage(MSGID_ATTR_SYNTAX_DIRECTORYSTRING_UPDATED_ALLOW_ZEROLENGTH,
                     "The %s attribute in configuration entry %s has been " +
-                    "updated with a new value of %s.");
+                    "updated with a new value of %s");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_AUTHPW_INVALID_SCHEME_CHAR,
                     "The provided authPassword value had an invalid scheme " +
-                    "character at position %d.");
+                    "character at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_AUTHPW_NO_SCHEME,
                     "The provided authPassword value had a zero-length " +
-                    "scheme element.");
+                    "scheme element");
     registerMessage(MSGID_ATTR_SYNTAX_AUTHPW_NO_SCHEME_SEPARATOR,
                     "The provided authPassword value was missing the " +
                     "separator character or had an illegal character between " +
-                    "the scheme and authInfo elements.");
+                    "the scheme and authInfo elements");
     registerMessage(MSGID_ATTR_SYNTAX_AUTHPW_INVALID_AUTH_INFO_CHAR,
                     "The provided authPassword value had an invalid authInfo " +
-                    "character at position %d.");
+                    "character at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_AUTHPW_NO_AUTH_INFO,
                     "The provided authPassword value had a zero-length " +
-                    "authInfo element.");
+                    "authInfo element");
     registerMessage(MSGID_ATTR_SYNTAX_AUTHPW_NO_AUTH_INFO_SEPARATOR,
                     "The provided authPassword value was missing the " +
                     "separator character or had an illegal character between " +
-                    "the authInfo and authValue elements.");
+                    "the authInfo and authValue elements");
     registerMessage(MSGID_ATTR_SYNTAX_AUTHPW_INVALID_AUTH_VALUE_CHAR,
                     "The provided authPassword value had an invalid " +
-                    "authValue character at position %d.");
+                    "authValue character at position %d");
     registerMessage(MSGID_ATTR_SYNTAX_AUTHPW_NO_AUTH_VALUE,
                     "The provided authPassword value had a zero-length " +
-                    "authValue element.");
+                    "authValue element");
     registerMessage(MSGID_ATTR_SYNTAX_AUTHPW_INVALID_TRAILING_CHAR,
                     "The provided authPassword value had an invalid trailing " +
-                    "character at position %d.");
+                    "character at position %d");
 
 
     registerMessage(MSGID_EMR_INTFIRSTCOMP_NO_INITIAL_PARENTHESIS,
                     "The provided value \"%s\" could not be parsed by the " +
                     "integer first component matching rule because it did " +
-                    "not start with a parenthesis.");
+                    "not start with a parenthesis");
     registerMessage(MSGID_EMR_INTFIRSTCOMP_NO_NONSPACE,
                     "The provided value \"%s\" could not be parsed by the " +
                     "integer first component matching rule because it did " +
                     "not have any non-space characters after the opening " +
-                    "parenthesis.");
+                    "parenthesis");
     registerMessage(MSGID_EMR_INTFIRSTCOMP_NO_SPACE_AFTER_INT,
                     "The provided value \"%s\" could not be parsed by the " +
                     "integer first component matching rule because it did " +
-                    "not have any space characters after the first component.");
+                    "not have any space characters after the first component");
     registerMessage(MSGID_EMR_INTFIRSTCOMP_FIRST_COMPONENT_NOT_INT,
                     "The provided value \"%s\" could not be parsed by the " +
                     "integer first component matching rule because the first " +
-                    "component does not appear to be an integer value.");
+                    "component does not appear to be an integer value");
 
 
     registerMessage(MSGID_ATTR_SYNTAX_USERPW_NO_VALUE,
                     "No value was given to decode by the user password " +
-                    "attribute syntax.");
+                    "attribute syntax");
     registerMessage(MSGID_ATTR_SYNTAX_USERPW_NO_OPENING_BRACE,
                     "Unable to decode the provided value according to the " +
                     "user password syntax because the value does not start " +
-                    "with the opening curly brace (\"{\") character.");
+                    "with the opening curly brace (\"{\") character");
     registerMessage(MSGID_ATTR_SYNTAX_USERPW_NO_CLOSING_BRACE,
                     "Unable to decode the provided value according to the " +
                     "user password syntax because the value does not contain " +
-                    "a closing curly brace (\"}\") character.");
+                    "a closing curly brace (\"}\") character");
     registerMessage(MSGID_ATTR_SYNTAX_USERPW_NO_SCHEME,
                     "Unable to decode the provided value according to the " +
                     "user password syntax because the value does not contain " +
-                    "a storage scheme name.");
+                    "a storage scheme name");
 
     registerMessage(MSGID_ATTR_SYNTAX_RFC3672_SUBTREE_SPECIFICATION_INVALID,
                     "The provided value \"%s\" could not be parsed as a" +
-                    " valid RFC 3672 subtree specification.");
+                    " valid RFC 3672 subtree specification");
 
     registerMessage(MSGID_ATTR_SYNTAX_ABSOLUTE_SUBTREE_SPECIFICATION_INVALID,
                     "The provided value \"%s\" could not be parsed as a" +
-                    " valid absolute subtree specification.");
+                    " valid absolute subtree specification");
 
     registerMessage(MSGID_ATTR_SYNTAX_RELATIVE_SUBTREE_SPECIFICATION_INVALID,
                     "The provided value \"%s\" could not be parsed as a" +
-                    " valid relative subtree specification.");
+                    " valid relative subtree specification");
 
     registerMessage(MSGID_ATTR_SYNTAX_ATTRSYNTAX_EXTENSION_INVALID_CHARACTER,
             "The provided value \"%s\" could not be parsed as an " +
             "attribute syntax extension because an invalid character"+
-            "was found at position %d.");
+            "was found at position %d");
 
     registerMessage(MSGID_ATTR_SYNTAX_ATTRSYNTAX_INVALID_EXTENSION,
            "The attribute syntax could not be parsed because of an"+
-           "invalid extension."+ "%s.");
+           "invalid extension."+ "%s");
   }
 }
 
diff --git a/opends/src/server/org/opends/server/synchronization/common/LogMessages.java b/opends/src/server/org/opends/server/messages/SynchronizationMessages.java
similarity index 76%
rename from opends/src/server/org/opends/server/synchronization/common/LogMessages.java
rename to opends/src/server/org/opends/server/messages/SynchronizationMessages.java
index da1e49f..02124d4 100644
--- a/opends/src/server/org/opends/server/synchronization/common/LogMessages.java
+++ b/opends/src/server/org/opends/server/messages/SynchronizationMessages.java
@@ -24,16 +24,15 @@
  *
  *      Portions Copyright 2006-2007 Sun Microsystems, Inc.
  */
-package org.opends.server.synchronization.common;
+package org.opends.server.messages;
 
-import org.opends.server.messages.MessageHandler;
 import static org.opends.server.messages.MessageHandler.*;
 
 /**
  * This class defines the set of message IDs and default format strings for
  * messages associated with the Synchronization.
  */
-public class LogMessages {
+public class SynchronizationMessages {
 
   /**
    * Name used to store attachment of historical information in the
@@ -267,49 +266,49 @@
    * Configuration.
    */
   public static final int MSGID_CHANGELOG_SERVER_ATTR =
-    CATEGORY_MASK_CORE | SEVERITY_MASK_INFORMATIONAL | 37;
+    CATEGORY_MASK_SYNC | SEVERITY_MASK_INFORMATIONAL | 37;
 
   /**
    * The message ID for the description of the attribute used to specify
    * the identifier of the Changelog Server.
    */
   public static final int MSGID_SERVER_ID_ATTR =
-    CATEGORY_MASK_CORE | SEVERITY_MASK_INFORMATIONAL | 38;
+    CATEGORY_MASK_SYNC | SEVERITY_MASK_INFORMATIONAL | 38;
 
   /**
    * The message id for the description of the attribute used to specify
    * the port number of the Changelog Server.
    */
   public static final int MSGID_CHANGELOG_PORT_ATTR =
-    CATEGORY_MASK_CORE | SEVERITY_MASK_INFORMATIONAL | 39;
+    CATEGORY_MASK_SYNC | SEVERITY_MASK_INFORMATIONAL | 39;
 
   /**
    * The message id for the description of the attribute used to specify
    * the receive Window Size used by a Changelog Server.
    */
   public static final int MSGID_WINDOW_SIZE_ATTR =
-    CATEGORY_MASK_CORE | SEVERITY_MASK_INFORMATIONAL | 40;
+    CATEGORY_MASK_SYNC | SEVERITY_MASK_INFORMATIONAL | 40;
 
   /**
    * The message id for thedescription of the  attribute used to specify
    * the maximum queue size used by a Changelog Server.
    */
   public static final int MSGID_QUEUE_SIZE_ATTR =
-    CATEGORY_MASK_CORE | SEVERITY_MASK_INFORMATIONAL | 41;
+    CATEGORY_MASK_SYNC | SEVERITY_MASK_INFORMATIONAL | 41;
 
   /**
    * The message id for the Attribute used to specify the directory where the
    * persistent storage of the Changelog server will be saved.
    */
   public static final int MSGID_CHANGELOG_DIR_PATH_ATTR =
-    CATEGORY_MASK_CORE | SEVERITY_MASK_INFORMATIONAL | 42;
+    CATEGORY_MASK_SYNC | SEVERITY_MASK_INFORMATIONAL | 42;
 
   /**
    * The message id for the description of the attribute used to configure
    * the purge delay of the Changelog Servers.
    */
   public static final int MSGID_PURGE_DELAY_ATTR =
-    CATEGORY_MASK_CORE | SEVERITY_MASK_INFORMATIONAL | 43;
+    CATEGORY_MASK_SYNC | SEVERITY_MASK_INFORMATIONAL | 43;
 
   /**
    * The message id for the error raised when export/import
@@ -367,134 +366,134 @@
    */
   public static void registerMessages()
   {
-    MessageHandler.registerMessage(MSGID_SYNC_INVALID_DN,
-       "The configured DN is already used by another domain.");
-    MessageHandler.registerMessage(MSGID_INVALID_CHANGELOG_SERVER,
+    registerMessage(MSGID_SYNC_INVALID_DN,
+       "The configured DN is already used by another domain");
+    registerMessage(MSGID_INVALID_CHANGELOG_SERVER,
         "Invalid changelog server configuration");
-    MessageHandler.registerMessage(MSGID_UNKNOWN_HOSTNAME,
-        "Changelog failed to start because the hostname is unknown.");
-    MessageHandler.registerMessage(MSGID_COULD_NOT_BIND_CHANGELOG,
+    registerMessage(MSGID_UNKNOWN_HOSTNAME,
+        "Changelog failed to start because the hostname is unknown");
+    registerMessage(MSGID_COULD_NOT_BIND_CHANGELOG,
         "Changelog failed to start :" +
         " could not bind to the changelog listen port : %d. Error : %s");
-    MessageHandler.registerMessage(MSGID_UNKNOWN_TYPE,
+    registerMessage(MSGID_UNKNOWN_TYPE,
         "Unknown operation type : %s");
-    MessageHandler.registerMessage(MSGID_ERROR_REPLAYING_OPERATION,
+    registerMessage(MSGID_ERROR_REPLAYING_OPERATION,
         "Error %s when replaying operation with changenumber %s %s : %s");
-    MessageHandler.registerMessage(MSGID_OPERATION_NOT_FOUND_IN_PENDING,
+    registerMessage(MSGID_OPERATION_NOT_FOUND_IN_PENDING,
         "Internal Error : Operation %s change number %s" +
         " was not found in pending list");
-    MessageHandler.registerMessage(MSGID_COULD_NOT_INITIALIZE_DB,
+    registerMessage(MSGID_COULD_NOT_INITIALIZE_DB,
         "Changelog failed to start " +
         "because the database %s could not be opened");
-    MessageHandler.registerMessage(MSGID_COULD_NOT_READ_DB,
+    registerMessage(MSGID_COULD_NOT_READ_DB,
         "Changelog failed to start " +
         "because the database %s could not be read");
-    MessageHandler.registerMessage(MSGID_EXCEPTION_REPLAYING_OPERATION,
+    registerMessage(MSGID_EXCEPTION_REPLAYING_OPERATION,
          "An Exception was caught while replaying operation %s : %s");
-    MessageHandler.registerMessage(MSGID_NEED_CHANGELOG_PORT,
+    registerMessage(MSGID_NEED_CHANGELOG_PORT,
          "The Changelog server port must be defined");
-    MessageHandler.registerMessage(MSGID_ERROR_UPDATING_RUV,
+    registerMessage(MSGID_ERROR_UPDATING_RUV,
          "Error %s when updating server state %s : %s base dn : %s");
-    MessageHandler.registerMessage(MSGID_ERROR_SEARCHING_RUV,
+    registerMessage(MSGID_ERROR_SEARCHING_RUV,
          "Error %s when searching for server state %s : %s base dn : %s");
-    MessageHandler.registerMessage(MSGID_SERVER_DISCONNECT,
-         "%s has disconnected from this changelog server.");
-    MessageHandler.registerMessage(MSGID_NO_CHANGELOG_SERVER_LISTENING,
-         "There is no changelog server listening on %s.");
-    MessageHandler.registerMessage(MSGID_CHANGELOG_MISSING_CHANGES,
+    registerMessage(MSGID_SERVER_DISCONNECT,
+         "%s has disconnected from this changelog server");
+    registerMessage(MSGID_NO_CHANGELOG_SERVER_LISTENING,
+         "There is no changelog server listening on %s");
+    registerMessage(MSGID_CHANGELOG_MISSING_CHANGES,
         "The changelog server %s is missing some changes that this server" +
-        " has already processed.");
-    MessageHandler.registerMessage(MSGID_NEED_MORE_THAN_ONE_CHANGELOG_SERVER,
-        "More than one changelog server should be configured.");
-    MessageHandler.registerMessage(MSGID_EXCEPTION_STARTING_SESSION,
+        " has already processed");
+    registerMessage(MSGID_NEED_MORE_THAN_ONE_CHANGELOG_SERVER,
+        "More than one changelog server should be configured");
+    registerMessage(MSGID_EXCEPTION_STARTING_SESSION,
         "Caught Exception during initial communication with " +
         "changelog server : ");
-    MessageHandler.registerMessage(MSGID_CANNOT_RECOVER_CHANGES,
+    registerMessage(MSGID_CANNOT_RECOVER_CHANGES,
         "Error when searching old changes from the database. ");
-    MessageHandler.registerMessage(
+    registerMessage(
         MSGID_COULD_NOT_FIND_CHANGELOG_WITH_MY_CHANGES,
         "Could not find a changelog server that has seen all the local" +
-        " changes. Going to replay changes.");
-    MessageHandler.registerMessage(MSGID_COULD_NOT_FIND_CHANGELOG,
+        " changes. Going to replay changes");
+    registerMessage(MSGID_COULD_NOT_FIND_CHANGELOG,
         "Could not connect to any changelog server, retrying...");
-    MessageHandler.registerMessage(MSGID_EXCEPTION_CLOSING_DATABASE,
+    registerMessage(MSGID_EXCEPTION_CLOSING_DATABASE,
         "Error closing changelog database %s : ");
-    MessageHandler.registerMessage(MSGID_EXCEPTION_DECODING_OPERATION,
+    registerMessage(MSGID_EXCEPTION_DECODING_OPERATION,
         "Error trying to replay %s, operation could not be decoded : ");
-    MessageHandler.registerMessage(MSGID_CHANGELOG_SHUTDOWN_DATABASE_ERROR,
+    registerMessage(MSGID_CHANGELOG_SHUTDOWN_DATABASE_ERROR,
         "Error Trying to use the underlying database. " +
         "The Changelog Service is going to shut down. ");
-    MessageHandler.registerMessage(MSGID_IGNORE_BAD_DN_IN_DATABASE_IDENTIFIER,
+    registerMessage(MSGID_IGNORE_BAD_DN_IN_DATABASE_IDENTIFIER,
         "A badly formatted DN was found in the list of database known " +
         "By this changelog service :%s. This Identifier will be ignored. ");
-    MessageHandler.registerMessage(MSGID_ERROR_CLOSING_CHANGELOG_ENV,
+    registerMessage(MSGID_ERROR_CLOSING_CHANGELOG_ENV,
         "Error closing the changelog database : ");
-    MessageHandler.registerMessage(MSGID_EXCEPTION_CHANGELOG_TRIM_FLUSH,
+    registerMessage(MSGID_EXCEPTION_CHANGELOG_TRIM_FLUSH,
         "Error during the changelog database trimming or flush process." +
         " The Changelog service is going to shutdown. ");
-    MessageHandler.registerMessage(MSGID_CHANGELOG_CONNECTION_ERROR,
+    registerMessage(MSGID_CHANGELOG_CONNECTION_ERROR,
         "Error during Changelog service message processing ." +
         " Connection from %s is rejected. ");
-    MessageHandler.registerMessage(MSGID_UNKNOWN_MESSAGE,
+    registerMessage(MSGID_UNKNOWN_MESSAGE,
         "%s has sent an unknown message. Closing the connection. ");
-    MessageHandler.registerMessage(MSGID_WRITER_UNEXPECTED_EXCEPTION,
+    registerMessage(MSGID_WRITER_UNEXPECTED_EXCEPTION,
         "An unexpected error happened handling connection with %s." +
         "This connection is going to be closed. ");
-    MessageHandler.registerMessage(MSGID_CHANGELOG_ERROR_SENDING_ACK,
+    registerMessage(MSGID_CHANGELOG_ERROR_SENDING_ACK,
         "An unexpected error happened sending an ack to %s." +
         "This connection is going to be closed. ");
-    MessageHandler.registerMessage(
+    registerMessage(
         MSGID_EXCEPTION_RECEIVING_SYNCHRONIZATION_MESSAGE,
         "An Exception was caught while receiving synchronization message : %s");
-    MessageHandler.registerMessage(MSGID_LOOP_REPLAYING_OPERATION,
+    registerMessage(MSGID_LOOP_REPLAYING_OPERATION,
         "A loop was detected while replaying operation: %s");
-    MessageHandler.registerMessage(MSGID_FILE_CHECK_CREATE_FAILED,
+    registerMessage(MSGID_FILE_CHECK_CREATE_FAILED,
         "An Exception was caught while testing existence or trying " +
         " to create the directory for the changelog database : %s");
-    MessageHandler.registerMessage(MSGID_CHANGELOG_SERVER_ATTR,
+    registerMessage(MSGID_CHANGELOG_SERVER_ATTR,
         "Specifies the list of Changelog Servers to which this" +
         " Changelog Server should connect. Each value of this attribute" +
         " should contain a values build with the hostname and the port" +
         " number of the remote server separated with a \":\"");
-    MessageHandler.registerMessage(MSGID_SERVER_ID_ATTR,
+    registerMessage(MSGID_SERVER_ID_ATTR,
         "Specifies the server ID. Each Changelog Server in the topology" +
-        " Must be assigned a unique server ID in the topology.");
-    MessageHandler.registerMessage(MSGID_CHANGELOG_PORT_ATTR,
+        " Must be assigned a unique server ID in the topology");
+    registerMessage(MSGID_CHANGELOG_PORT_ATTR,
         "Specifies the port number that the changelog server will use to" +
-        " listen for connections from LDAP servers.");
-    MessageHandler.registerMessage(MSGID_WINDOW_SIZE_ATTR,
-        "Specifies the receive window size of the changelog server.");
-    MessageHandler.registerMessage(MSGID_QUEUE_SIZE_ATTR,
+        " listen for connections from LDAP servers");
+    registerMessage(MSGID_WINDOW_SIZE_ATTR,
+        "Specifies the receive window size of the changelog server");
+    registerMessage(MSGID_QUEUE_SIZE_ATTR,
         "Specifies the receive queue size of the changelog server." +
         " The Changelog servers will queue up to this number of messages" +
         " in its memory queue and save the older messages to persistent" +
         " storage. Using a larger size may improve performances when" +
         " The synchronization delay is larger than this size but at the cost" +
-        " of using more memory.");
-    MessageHandler.registerMessage(MSGID_CHANGELOG_DIR_PATH_ATTR,
+        " of using more memory");
+    registerMessage(MSGID_CHANGELOG_DIR_PATH_ATTR,
         "Specifies the Changelog Server directory. The Changelog server" +
-        " will create all persistent storage below this path.");
-    MessageHandler.registerMessage(MSGID_PURGE_DELAY_ATTR,
+        " will create all persistent storage below this path");
+    registerMessage(MSGID_PURGE_DELAY_ATTR,
         "Specifies the Changelog Purge Delay, The Changelog servers will" +
         " keep all changes up to this amount of time before deleting them." +
         " This values defines the maximum age of a backup that can be" +
         " restored because changelog servers would not be able to refresh" +
         " LDAP servers with older versions of the data. A zero value" +
-        " can be used to specify an infinite delay (or never purge).");
-    MessageHandler.registerMessage(MSGID_SIMULTANEOUS_IMPORT_EXPORT_REJECTED,
+        " can be used to specify an infinite delay (or never purge)");
+    registerMessage(MSGID_SIMULTANEOUS_IMPORT_EXPORT_REJECTED,
         "The current request is rejected due to an import or an export" +
-        " already in progress for the same data.");
-    MessageHandler.registerMessage(MSGID_INVALID_IMPORT_SOURCE,
-        "Invalid source for the import.");
-    MessageHandler.registerMessage(MSGID_INVALID_EXPORT_TARGET,
-        "Invalid target for the export.");
-    MessageHandler.registerMessage(MSGID_NO_REACHABLE_PEER_IN_THE_DOMAIN,
-        "No reachable peer in the domain.");
-    MessageHandler.registerMessage(MSGID_NO_MATCHING_DOMAIN,
-        "No domain matches the base DN provided.");
-    MessageHandler.registerMessage(MSGID_MULTIPLE_MATCHING_DOMAIN,
-        "Multiple domains match the base DN provided.");
-    MessageHandler.registerMessage(MSGID_INVALID_PROVIDER,
-        "The provider class does not allow the operation requested.");
+        " already in progress for the same data");
+    registerMessage(MSGID_INVALID_IMPORT_SOURCE,
+        "Invalid source for the import");
+    registerMessage(MSGID_INVALID_EXPORT_TARGET,
+        "Invalid target for the export");
+    registerMessage(MSGID_NO_REACHABLE_PEER_IN_THE_DOMAIN,
+        "No reachable peer in the domain");
+    registerMessage(MSGID_NO_MATCHING_DOMAIN,
+        "No domain matches the base DN provided");
+    registerMessage(MSGID_MULTIPLE_MATCHING_DOMAIN,
+        "Multiple domains match the base DN provided");
+    registerMessage(MSGID_INVALID_PROVIDER,
+        "The provider class does not allow the operation requested");
   }
 }
diff --git a/opends/src/server/org/opends/server/messages/TaskMessages.java b/opends/src/server/org/opends/server/messages/TaskMessages.java
index d1577d6..2c64e54 100644
--- a/opends/src/server/org/opends/server/messages/TaskMessages.java
+++ b/opends/src/server/org/opends/server/messages/TaskMessages.java
@@ -249,67 +249,67 @@
 
     registerMessage(MSGID_TASK_SHUTDOWN_DEFAULT_MESSAGE,
                     "The Directory Server shutdown process has been " +
-                    "initiated by task %s.");
+                    "initiated by task %s");
     registerMessage(MSGID_TASK_SHUTDOWN_CUSTOM_MESSAGE,
                     "The Directory Server shutdown process has been " +
                     "initiated by task %s:  %s");
     registerMessage(MSGID_TASK_SHUTDOWN_INSUFFICIENT_RESTART_PRIVILEGES,
                     "You do not have sufficient privileges to initiate a " +
-                    "Directory Server restart.");
+                    "Directory Server restart");
     registerMessage(MSGID_TASK_SHUTDOWN_INSUFFICIENT_SHUTDOWN_PRIVILEGES,
                     "You do not have sufficient privileges to initiate a " +
-                    "Directory Server shutdown.");
+                    "Directory Server shutdown");
 
 
     registerMessage(MSGID_TASK_ADDSCHEMAFILE_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to modify the " +
-                    "server schema.");
+                    "server schema");
     registerMessage(MSGID_TASK_ADDSCHEMAFILE_NO_FILENAME,
                     "Unable to add one or more files to the server schema " +
                     "because no schema file names were provided in " +
-                    "attribute %s of task entry %s.");
+                    "attribute %s of task entry %s");
     registerMessage(MSGID_TASK_ADDSCHEMAFILE_NO_SUCH_FILE,
                     "Unable to add one or more files to the server schema " +
                     "because the specified schema file %s does not exist in " +
-                    "schema directory %s.");
+                    "schema directory %s");
     registerMessage(MSGID_TASK_ADDSCHEMAFILE_ERROR_CHECKING_FOR_FILE,
                     "Unable to add one or more files to the server schema " +
                     "because an error occurred while attempting to determine " +
-                    "whether file %s exists in schema directory %s:  %s.");
+                    "whether file %s exists in schema directory %s:  %s");
     registerMessage(MSGID_TASK_ADDSCHEMAFILE_ERROR_LOADING_SCHEMA_FILE,
                     "An error occurred while attempting to load the contents " +
-                    "of schema file %s into the server schema:  %s.");
+                    "of schema file %s into the server schema:  %s");
     registerMessage(MSGID_TASK_ADDSCHEMAFILE_CANNOT_NOTIFY_SYNC_PROVIDER,
                     "An error occurred while attempting to notify a " +
                     "synchronization provider of type %s about the schema " +
-                    "changes made by the add schema file task:  %s.");
+                    "changes made by the add schema file task:  %s");
     registerMessage(MSGID_TASK_ADDSCHEMAFILE_CANNOT_LOCK_SCHEMA,
                     "Unable to add one or more files to the server schema " +
                     "because the server was unable to obtain a write lock on " +
-                    "the schema entry %s after multiple attempts.");
+                    "the schema entry %s after multiple attempts");
 
 
     registerMessage(MSGID_TASK_BACKUP_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to initiate a " +
-                    "Directory Server backup.");
+                    "Directory Server backup");
     registerMessage(MSGID_TASK_RESTORE_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to initiate a " +
-                    "Directory Server restore.");
+                    "Directory Server restore");
     registerMessage(MSGID_TASK_LDIFIMPORT_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to initiate an " +
-                    "LDIF import.");
+                    "LDIF import");
     registerMessage(MSGID_TASK_LDIFEXPORT_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to initiate an " +
-                    "LDIF export.");
+                    "LDIF export");
     registerMessage(MSGID_TASK_INDEXREBUILD_INSUFFICIENT_PRIVILEGES,
                     "You do not have sufficient privileges to initiate an " +
-                    "index rebuild.");
+                    "index rebuild");
 
     registerMessage(MSGID_TASK_INITIALIZE_TARGET_INVALID_DN,
-                    "Invalid DN provided with the Initialize Target task.");
+                    "Invalid DN provided with the Initialize Target task");
 
     registerMessage(MSGID_TASK_INITIALIZE_INVALID_DN,
-                    "Invalid DN provided with the Initialize task.");
+                    "Invalid DN provided with the Initialize task");
   }
 }
 
diff --git a/opends/src/server/org/opends/server/messages/ToolMessages.java b/opends/src/server/org/opends/server/messages/ToolMessages.java
index 2288ff6..5ca8968 100644
--- a/opends/src/server/org/opends/server/messages/ToolMessages.java
+++ b/opends/src/server/org/opends/server/messages/ToolMessages.java
@@ -6945,17 +6945,17 @@
                     "Unable to create an SSL connection to the server: %s");
     registerMessage(MSGID_TOOLS_SSL_CONNECTION_NOT_INITIALIZED,
                     "Unable to create an SSL connection to the server because" +
-                    " the connection factory has not been initialized.");
+                    " the connection factory has not been initialized");
     registerMessage(MSGID_TOOLS_CANNOT_LOAD_KEYSTORE_FILE,
-                    "Cannot load the key store file: %s.");
+                    "Cannot load the key store file: %s");
     registerMessage(MSGID_TOOLS_CANNOT_INIT_KEYMANAGER,
                     "Cannot initialize the key manager for the key store:" +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_TOOLS_CANNOT_LOAD_TRUSTSTORE_FILE,
-                    "Cannot load the key store file: %s.");
+                    "Cannot load the key store file: %s");
     registerMessage(MSGID_TOOLS_CANNOT_INIT_TRUSTMANAGER,
                     "Cannot initialize the key manager for the key store:" +
-                    "%s.");
+                    "%s");
 
 
     registerMessage(MSGID_ENCPW_DESCRIPTION_LISTSCHEMES,
@@ -6974,10 +6974,10 @@
                     "The fully-qualified name of the Java class to use as " +
                     "the Directory Server configuration handler.  If this is " +
                     "not provided, then a default of " +
-                    ConfigFileHandler.class.getName() + " will be used.");
+                    ConfigFileHandler.class.getName() + " will be used");
     registerMessage(MSGID_DESCRIPTION_CONFIG_FILE,
                     "Specifies the path to the Directory Server " +
-                    "configuration file.");
+                    "configuration file");
     registerMessage(MSGID_ENCPW_DESCRIPTION_SCHEME,
                     "Scheme to use for the encoded password");
     registerMessage(MSGID_ENCPW_DESCRIPTION_AUTHPW,
@@ -6987,62 +6987,62 @@
                     "Use the LDAP compare result as an exit code for the " +
                     "password comparison");
     registerMessage(MSGID_DESCRIPTION_USAGE,
-                    "Displays this usage information.");
+                    "Displays this usage information");
     registerMessage(MSGID_CANNOT_INITIALIZE_ARGS,
                     "An unexpected error occurred while attempting to " +
-                    "initialize the command-line arguments:  %s.");
+                    "initialize the command-line arguments:  %s");
     registerMessage(MSGID_ERROR_PARSING_ARGS,
                     "An error occurred while parsing the command-line " +
-                    "arguments:  %s.");
+                    "arguments:  %s");
     registerMessage(MSGID_ENCPW_NO_CLEAR_PW,
                     "No clear-text password was specified.  Use --%s or --%s " +
-                    "to specify the password to encode.");
+                    "to specify the password to encode");
     registerMessage(MSGID_ENCPW_NO_SCHEME,
                     "No password storage scheme was specified.  Use the --%s " +
-                    "argument to specify the storage scheme.");
+                    "argument to specify the storage scheme");
     registerMessage(MSGID_SERVER_BOOTSTRAP_ERROR,
                     "An unexpected error occurred while attempting to " +
-                    "bootstrap the Directory Server client-side code:  %s.");
+                    "bootstrap the Directory Server client-side code:  %s");
     registerMessage(MSGID_CANNOT_LOAD_CONFIG,
                     "An error occurred while trying to load the Directory " +
-                    "Server configuration:  %s.");
+                    "Server configuration:  %s");
     registerMessage(MSGID_CANNOT_LOAD_SCHEMA,
                     "An error occurred while trying to load the Directory " +
-                    "Server schema:  %s.");
+                    "Server schema:  %s");
     registerMessage(MSGID_CANNOT_INITIALIZE_CORE_CONFIG,
                     "An error occurred while trying to initialize the core " +
-                    "Directory Server configuration:  %s.");
+                    "Directory Server configuration:  %s");
     registerMessage(MSGID_ENCPW_CANNOT_INITIALIZE_STORAGE_SCHEMES,
                     "An error occurred while trying to initialize the " +
-                    "Directory Server password storage schemes:  %s.");
+                    "Directory Server password storage schemes:  %s");
     registerMessage(MSGID_ENCPW_NO_AUTH_STORAGE_SCHEMES,
                     "No authentication password storage schemes have been " +
-                    "configured for use in the Directory Server.");
+                    "configured for use in the Directory Server");
     registerMessage(MSGID_ENCPW_NO_STORAGE_SCHEMES,
                     "No password storage schemes have been configured for " +
-                    "use in the Directory Server.");
+                    "use in the Directory Server");
     registerMessage(MSGID_ENCPW_NO_SUCH_AUTH_SCHEME,
                     "Authentication password storage scheme \"%s\" is not "+
-                    "configured for use in the Directory Server.");
+                    "configured for use in the Directory Server");
     registerMessage(MSGID_ENCPW_NO_SUCH_SCHEME,
                     "Password storage scheme \"%s\" is not configured for " +
-                    "use in the Directory Server.");
+                    "use in the Directory Server");
     registerMessage(MSGID_ENCPW_INVALID_ENCODED_AUTHPW,
                     "The provided password is not a valid encoded " +
-                    "authentication password value:  %s.");
+                    "authentication password value:  %s");
     registerMessage(MSGID_ENCPW_PASSWORDS_MATCH,
-                    "The provided clear-text and encoded passwords match.");
+                    "The provided clear-text and encoded passwords match");
     registerMessage(MSGID_ENCPW_PASSWORDS_DO_NOT_MATCH,
                     "The provided clear-text and encoded passwords do not " +
-                    "match.");
+                    "match");
     registerMessage(MSGID_ENCPW_INVALID_ENCODED_USERPW,
                     "The provided password is not a valid encoded " +
-                    "user password value:  %s.");
+                    "user password value:  %s");
     registerMessage(MSGID_ENCPW_ENCODED_PASSWORD,
-                    "Encoded Password:  \"%s\".");
+                    "Encoded Password:  \"%s\"");
     registerMessage(MSGID_ENCPW_CANNOT_ENCODE,
                     "An error occurred while attempting to encode the " +
-                    "clear-text password:  %s.");
+                    "clear-text password:  %s");
 
 
     registerMessage(MSGID_LDIFEXPORT_DESCRIPTION_LDIF_FILE,
@@ -7076,81 +7076,81 @@
                     "Generate a signed hash of the export data");
     registerMessage(MSGID_CANNOT_INITIALIZE_CRYPTO_MANAGER,
                     "An error occurred while attempting to initialize the " +
-                    "crypto manager:  %s.");
+                    "crypto manager:  %s");
     registerMessage(MSGID_LDIFEXPORT_CANNOT_INITIALIZE_PLUGINS,
                     "An error occurred while attempting to initialize the " +
-                    "LDIF export plugins:  %s.");
+                    "LDIF export plugins:  %s");
     registerMessage(MSGID_LDIFEXPORT_CANNOT_PARSE_EXCLUDE_FILTER,
                     "Unable to decode exclude filter string \"%s\" as a " +
-                    "valid search filter:  %s.");
+                    "valid search filter:  %s");
     registerMessage(MSGID_LDIFEXPORT_CANNOT_PARSE_INCLUDE_FILTER,
                     "Unable to decode include filter string \"%s\" as a " +
-                    "valid search filter:  %s.");
+                    "valid search filter:  %s");
     registerMessage(MSGID_CANNOT_DECODE_BASE_DN,
                     "Unable to decode base DN string \"%s\" as a valid " +
-                    "distinguished name:  %s.");
+                    "distinguished name:  %s");
     registerMessage(MSGID_LDIFEXPORT_MULTIPLE_BACKENDS_FOR_ID,
                     "Multiple Directory Server backends are configured with " +
-                    "the requested backend ID \"%s\".");
+                    "the requested backend ID \"%s\"");
     registerMessage(MSGID_LDIFEXPORT_NO_BACKENDS_FOR_ID,
                     "None of the Directory Server backends are configured " +
-                    "with the requested backend ID \"%s\".");
+                    "with the requested backend ID \"%s\"");
     registerMessage(MSGID_LDIFEXPORT_CANNOT_EXPORT_BACKEND,
                     "The Directory Server backend with backend ID \"%s\" " +
                     "does not provide a mechanism for performing LDIF " +
-                    "exports.");
+                    "exports");
     registerMessage(MSGID_LDIFEXPORT_CANNOT_DECODE_EXCLUDE_BASE,
                     "Unable to decode exclude branch string \"%s\" as a " +
-                    "valid distinguished name:  %s.");
+                    "valid distinguished name:  %s");
     registerMessage(MSGID_LDIFEXPORT_CANNOT_DECODE_WRAP_COLUMN_AS_INTEGER,
                     "Unable to decode wrap column value \"%s\" as an " +
-                    "integer.");
+                    "integer");
     registerMessage(MSGID_LDIFEXPORT_CANNOT_LOCK_BACKEND,
                     "An error occurred while attempting to acquire a shared " +
                     "lock for backend %s:  %s.  This generally means that " +
                     "some other process has an exclusive lock on this " +
                     "backend (e.g., an LDIF import or a restore).  The LDIF " +
-                    "export cannot continue.");
+                    "export cannot continue");
     registerMessage(MSGID_LDIFEXPORT_ERROR_DURING_EXPORT,
                     "An error occurred while attempting to process the LDIF " +
-                    "export:  %s.");
+                    "export:  %s");
     registerMessage(MSGID_LDIFEXPORT_CANNOT_UNLOCK_BACKEND,
                     "An error occurred while attempting to release the " +
                     "shared lock for backend %s:  %s.  This lock should " +
                     "automatically be cleared when the export process exits, " +
-                    "so no further action should be required.");
+                    "so no further action should be required");
     registerMessage(MSGID_CANNOT_DECODE_BACKEND_BASE_DN,
                     "Unable to decode the backend configuration base DN " +
-                    "string \"%s\" as a valid DN:  %s.");
+                    "string \"%s\" as a valid DN:  %s");
     registerMessage(MSGID_CANNOT_RETRIEVE_BACKEND_BASE_ENTRY,
                     "Unable to retrieve the backend configuration base entry " +
-                    "\"%s\" from the server configuration:  %s.");
+                    "\"%s\" from the server configuration:  %s");
     registerMessage(MSGID_CANNOT_DETERMINE_BACKEND_CLASS,
                     "Cannot determine the name of the Java class providing " +
                     "the logic for the backend defined in configuration " +
-                    "entry %s:  %s.");
+                    "entry %s:  %s");
     registerMessage(MSGID_CANNOT_LOAD_BACKEND_CLASS,
                     "Unable to load class %s referenced in configuration " +
-                    "entry %s for use as a Directory Server backend:  %s.");
+                    "entry %s for use as a Directory Server backend:  %s");
     registerMessage(MSGID_CANNOT_INSTANTIATE_BACKEND_CLASS,
                     "Unable to create an instance of class %s referenced in " +
                     "configuration entry %s as a Directory Server backend:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_NO_BASES_FOR_BACKEND,
                     "No base DNs have been defined in backend configuration " +
-                    "entry %s.  This backend will not be evaluated.");
+                    "entry %s.  This backend will not be evaluated");
     registerMessage(MSGID_CANNOT_DETERMINE_BASES_FOR_BACKEND,
                     "Unable to determine the set of base DNs defined in " +
-                    "backend configuration entry %s:  %s.");
+                    "backend configuration entry %s:  %s");
     registerMessage(MSGID_CANNOT_DETERMINE_BACKEND_ID,
                     "Cannot determine the backend ID for the backend defined " +
-                    "in configuration entry %s:  %s.");
+                    "in configuration entry %s:  %s");
     registerMessage(MSGID_LDIFEXPORT_CANNOT_DECODE_INCLUDE_BASE,
                     "Unable to decode include branch string \"%s\" as a " +
-                    "valid distinguished name:  %s.");
+                    "valid distinguished name:  %s");
     registerMessage(MSGID_LDIFEXPORT_INVALID_INCLUDE_BASE,
                     "Provided include base DN \"%s\" is not handled by the " +
-                    "backend with backend ID %s.");
+                    "backend with backend ID %s");
 
 
     registerMessage(MSGID_LDIFIMPORT_DESCRIPTION_LDIF_FILE,
@@ -7195,82 +7195,82 @@
                     "Use quiet mode (no output)");
     registerMessage(MSGID_LDIFIMPORT_CONFLICTING_OPTIONS,
                     "The %s and %s arguments are incompatible and may not be " +
-                    "used together.");
+                    "used together");
     registerMessage(MSGID_LDIFIMPORT_MISSING_REQUIRED_ARGUMENT,
                     "Neither the %s or the %s argument was provided.  One " +
                     "of these arguments must be given to specify the source " +
-                    "for the LDIF data to be imported.");
+                    "for the LDIF data to be imported");
     registerMessage(MSGID_LDIFIMPORT_CANNOT_INITIALIZE_PWPOLICY,
                     "An error occurred while attempting to initialize the " +
-                    "password policy components:  %s.");
+                    "password policy components:  %s");
     registerMessage(MSGID_LDIFIMPORT_CANNOT_INITIALIZE_PLUGINS,
                     "An error occurred while attempting to initialize the " +
-                    "LDIF import plugins:  %s.");
+                    "LDIF import plugins:  %s");
     registerMessage(MSGID_LDIFIMPORT_CANNOT_PARSE_EXCLUDE_FILTER,
                     "Unable to decode exclude filter string \"%s\" as a " +
-                    "valid search filter:  %s.");
+                    "valid search filter:  %s");
     registerMessage(MSGID_LDIFIMPORT_CANNOT_PARSE_INCLUDE_FILTER,
                     "Unable to decode include filter string \"%s\" as a " +
-                    "valid search filter:  %s.");
+                    "valid search filter:  %s");
     registerMessage(MSGID_LDIFIMPORT_MULTIPLE_BACKENDS_FOR_ID,
                     "Multiple Directory Server backends are configured with " +
-                    "backend ID \"%s\".");
+                    "backend ID \"%s\"");
     registerMessage(MSGID_LDIFIMPORT_NO_BACKENDS_FOR_ID,
                     "None of the Directory Server backends are configured " +
-                    "with the requested backend ID \"%s\".");
+                    "with the requested backend ID \"%s\"");
     registerMessage(MSGID_LDIFIMPORT_CANNOT_IMPORT,
                     "The Directory Server backend with backend ID %s does " +
-                    "not provide a mechanism for performing LDIF imports.");
+                    "not provide a mechanism for performing LDIF imports");
     registerMessage(MSGID_LDIFIMPORT_CANNOT_DECODE_EXCLUDE_BASE,
                     "Unable to decode exclude branch string \"%s\" as a " +
-                    "valid distinguished name:  %s.");
+                    "valid distinguished name:  %s");
     registerMessage(MSGID_LDIFIMPORT_CANNOT_DECODE_INCLUDE_BASE,
                     "Unable to decode include branch string \"%s\" as a " +
-                    "valid distinguished name:  %s.");
+                    "valid distinguished name:  %s");
     registerMessage(MSGID_LDIFIMPORT_INVALID_INCLUDE_BASE,
                     "Provided include base DN \"%s\" is not handled by the " +
-                    "backend with backend ID %s.");
+                    "backend with backend ID %s");
     registerMessage(MSGID_LDIFIMPORT_CANNOT_PARSE_TEMPLATE_FILE,
                     "Unable to parse the specified file %s as a MakeLDIF " +
-                    "template file:  %s.");
+                    "template file:  %s");
     registerMessage(MSGID_LDIFIMPORT_CANNOT_OPEN_REJECTS_FILE,
                     "An error occurred while trying to open the rejects " +
-                    "file %s for writing:  %s.");
+                    "file %s for writing:  %s");
     registerMessage(MSGID_LDIFIMPORT_CANNOT_LOCK_BACKEND,
                     "An error occurred while attempting to acquire an " +
                     "exclusive lock for backend %s:  %s.  This generally " +
                     "means some other process is still using this backend " +
                     "(e.g., it is in use by the Directory Server or a " +
                     "backup or LDIF export is in progress.  The LDIF import " +
-                    "cannot continue.");
+                    "cannot continue");
     registerMessage(MSGID_LDIFIMPORT_ERROR_DURING_IMPORT,
                     "An error occurred while attempting to process the LDIF " +
-                    "import:  %s.");
+                    "import:  %s");
     registerMessage(MSGID_LDIFIMPORT_CANNOT_UNLOCK_BACKEND,
                     "An error occurred while attempting to release the " +
                     "exclusive lock for backend %s:  %s.  This lock should " +
                     "automatically be cleared when the import process exits, " +
-                    "so no further action should be required.");
+                    "so no further action should be required");
 
 
     registerMessage(MSGID_PROCESSING_OPERATION,
-                    "Processing %s request for %s.");
+                    "Processing %s request for %s");
     registerMessage(MSGID_OPERATION_FAILED,
-                    "%s operation failed.");
+                    "%s operation failed");
     registerMessage(MSGID_OPERATION_SUCCESSFUL,
-                    "%s operation successful for DN %s.");
+                    "%s operation successful for DN %s");
     registerMessage(MSGID_PROCESSING_COMPARE_OPERATION,
-                    "Comparing type %s with value %s in entry %s.");
+                    "Comparing type %s with value %s in entry %s");
     registerMessage(MSGID_COMPARE_OPERATION_RESULT_FALSE,
-                    "Compare operation returned false for entry %s.");
+                    "Compare operation returned false for entry %s");
     registerMessage(MSGID_COMPARE_OPERATION_RESULT_TRUE,
-                    "Compare operation returned true for entry %s.");
+                    "Compare operation returned true for entry %s");
     registerMessage(MSGID_SEARCH_OPERATION_INVALID_PROTOCOL,
-                    "Invalid operation type returned in search result %s.");
+                    "Invalid operation type returned in search result %s");
     registerMessage(MSGID_DESCRIPTION_TRUSTALL,
                     "Trust all server SSL certificates");
     registerMessage(MSGID_DESCRIPTION_BINDDN,
-                    "Specifies the DN to use to bind to the server.");
+                    "Specifies the DN to use to bind to the server");
     registerMessage(MSGID_DESCRIPTION_BINDPASSWORD,
                     "Specifies the password to use to bind to the server");
     registerMessage(MSGID_DESCRIPTION_BINDPASSWORDFILE,
@@ -7288,18 +7288,18 @@
     registerMessage(MSGID_DESCRIPTION_USE_PWP_CONTROL,
                     "Use the password policy request control");
     registerMessage(MSGID_BIND_AUTHZID_RETURNED,
-                    "# Bound with authorization ID %s.");
+                    "# Bound with authorization ID %s");
     registerMessage(MSGID_BIND_PASSWORD_EXPIRED,
-                    "# Your password has expired.");
+                    "# Your password has expired");
     registerMessage(MSGID_BIND_PASSWORD_EXPIRING,
-                    "# Your password will expire in %s.");
+                    "# Your password will expire in %s");
     registerMessage(MSGID_BIND_ACCOUNT_LOCKED,
-                    "# Your account has been locked.");
+                    "# Your account has been locked");
     registerMessage(MSGID_BIND_MUST_CHANGE_PASSWORD,
                     "# You must change your password before any other " +
-                    "operations will be allowed.");
+                    "operations will be allowed");
     registerMessage(MSGID_BIND_GRACE_LOGINS_REMAINING,
-                    "# You have %d grace logins remaining.");
+                    "# You have %d grace logins remaining");
     registerMessage(MSGID_DESCRIPTION_VERBOSE,
                     "Use verbose mode");
     registerMessage(MSGID_DESCRIPTION_KEYSTOREPATH,
@@ -7323,7 +7323,7 @@
     registerMessage(MSGID_DESCRIPTION_VERSION,
                     "LDAP protocol version number");
     registerMessage(MSGID_DESCRIPTION_SHOWUSAGE,
-                    "Display this usage information.");
+                    "Display this usage information");
     registerMessage(MSGID_DESCRIPTION_CONTROLS,
                     "Use a request control with the provided information");
     registerMessage(MSGID_DESCRIPTION_CONTINUE_ON_ERROR,
@@ -7357,10 +7357,10 @@
                     "filter");
     registerMessage(MSGID_COMPARE_CANNOT_BASE64_DECODE_ASSERTION_VALUE,
                     "The assertion value was indicated to be base64-encoded, " +
-                    "but an error occurred while trying to decode the value.");
+                    "but an error occurred while trying to decode the value");
     registerMessage(MSGID_COMPARE_CANNOT_READ_ASSERTION_VALUE_FROM_FILE,
                     "Unable to read the assertion value from the specified " +
-                    "file:  %s.");
+                    "file:  %s");
     registerMessage(MSGID_SEARCH_DESCRIPTION_BASEDN,
                     "Search base DN");
     registerMessage(MSGID_SEARCH_DESCRIPTION_SIZE_LIMIT,
@@ -7376,159 +7376,159 @@
 
 
     registerMessage(MSGID_LDAPAUTH_CANNOT_SEND_SIMPLE_BIND,
-                    "Cannot send the simple bind request:  %s.");
+                    "Cannot send the simple bind request:  %s");
     registerMessage(MSGID_LDAPAUTH_CONNECTION_CLOSED_WITHOUT_BIND_RESPONSE,
                     "The connection to the Directory Server was closed " +
-                    "before the bind response could be read.");
+                    "before the bind response could be read");
     registerMessage(MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE,
                     "Cannot read the bind response from the server:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_LDAPAUTH_SERVER_DISCONNECT,
                     "The Directory Server indicated that it was closing the " +
                     "connection to the client (result code %d, message " +
-                    "\"%s\".");
+                    "\"%s\"");
     registerMessage(MSGID_LDAPAUTH_UNEXPECTED_EXTENDED_RESPONSE,
                     "The Directory Server sent an unexpected extended " +
-                    "response message to the client:  %s.");
+                    "response message to the client:  %s");
     registerMessage(MSGID_LDAPAUTH_UNEXPECTED_RESPONSE,
                     "The Directory Server sent an unexpected response " +
-                    "message to the client:  %s.");
+                    "message to the client:  %s");
     registerMessage(MSGID_LDAPAUTH_SIMPLE_BIND_FAILED,
-                    "The simple bind attempt failed.");
+                    "The simple bind attempt failed");
     registerMessage(MSGID_LDAPAUTH_NO_SASL_MECHANISM,
                     "A SASL bind was requested but no SASL mechanism was " +
-                    "specified.");
+                    "specified");
     registerMessage(MSGID_LDAPAUTH_UNSUPPORTED_SASL_MECHANISM,
                     "The requested SASL mechanism \"%s\" is not supported " +
-                    "by this client.");
+                    "by this client");
     registerMessage(MSGID_LDAPAUTH_TRACE_SINGLE_VALUED,
                     "The " + SASL_PROPERTY_TRACE + " SASL property may only " +
-                    "be given a single value.");
+                    "be given a single value");
     registerMessage(MSGID_LDAPAUTH_INVALID_SASL_PROPERTY,
                     "Property \"%s\" is not allowed for the %s SASL " +
-                    "mechanism.");
+                    "mechanism");
     registerMessage(MSGID_LDAPAUTH_CANNOT_SEND_SASL_BIND,
-                    "Cannot send the SASL %S bind request:  %s.");
+                    "Cannot send the SASL %S bind request:  %s");
     registerMessage(MSGID_LDAPAUTH_SASL_BIND_FAILED,
-                    "The SASL %s bind attempt failed.");
+                    "The SASL %s bind attempt failed");
     registerMessage(MSGID_LDAPAUTH_NO_SASL_PROPERTIES,
                     "No SASL properties were provided for use with the %s " +
-                    "mechanism.");
+                    "mechanism");
     registerMessage(MSGID_LDAPAUTH_AUTHID_SINGLE_VALUED,
                     "The \"" + SASL_PROPERTY_AUTHID + "\" SASL property only " +
-                    "accepts a single value.");
+                    "accepts a single value");
     registerMessage(MSGID_LDAPAUTH_SASL_AUTHID_REQUIRED,
                     "The \"" + SASL_PROPERTY_AUTHID + "\" SASL property is " +
-                    "required for use with the %s mechanism.");
+                    "required for use with the %s mechanism");
     registerMessage(MSGID_LDAPAUTH_CANNOT_SEND_INITIAL_SASL_BIND,
                     "Cannot send the initial bind request in the multi-stage " +
-                    "%s bind to the server:  %s.");
+                    "%s bind to the server:  %s");
     registerMessage(MSGID_LDAPAUTH_CANNOT_READ_INITIAL_BIND_RESPONSE,
                     "Cannot read the initial %s bind response from the " +
-                    "server:  %s.");
+                    "server:  %s");
     registerMessage(MSGID_LDAPAUTH_UNEXPECTED_INITIAL_BIND_RESPONSE,
                     "The client received an unexpected intermediate bind " +
                     "response.  The \"SASL bind in progress\" result was " +
                     "expected for the first response in the multi-stage %s " +
                     "bind process, but the bind response had a result code " +
-                    "of %d (%s) and an error message of \"%s\".");
+                    "of %d (%s) and an error message of \"%s\"");
     registerMessage(MSGID_LDAPAUTH_NO_CRAMMD5_SERVER_CREDENTIALS,
                     "The initial bind response from the server did not " +
                     "include any server SASL credentials containing the " +
                     "challenge information needed to complete the CRAM-MD5 " +
-                    "authentication.");
+                    "authentication");
     registerMessage(MSGID_LDAPAUTH_CANNOT_INITIALIZE_MD5_DIGEST,
                     "An unexpected error occurred while trying to initialize " +
-                    "the MD5 digest generator:  %s.");
+                    "the MD5 digest generator:  %s");
     registerMessage(MSGID_LDAPAUTH_CANNOT_SEND_SECOND_SASL_BIND,
                     "Cannot send the second bind request in the multi-stage " +
-                    "%s bind to the server:  %s.");
+                    "%s bind to the server:  %s");
     registerMessage(MSGID_LDAPAUTH_CANNOT_READ_SECOND_BIND_RESPONSE,
                     "Cannot read the second %s bind response from the " +
-                    "server:  %s.");
+                    "server:  %s");
     registerMessage(MSGID_LDAPAUTH_NO_ALLOWED_SASL_PROPERTIES,
                     "One or more SASL properties were provided, but the %s " +
-                    "mechanism does not take any SASL properties.");
+                    "mechanism does not take any SASL properties");
     registerMessage(MSGID_LDAPAUTH_AUTHZID_SINGLE_VALUED,
                     "The \"" + SASL_PROPERTY_AUTHZID + "\" SASL property " +
-                    "only accepts a single value.");
+                    "only accepts a single value");
     registerMessage(MSGID_LDAPAUTH_REALM_SINGLE_VALUED,
                     "The \"" + SASL_PROPERTY_REALM + "\" SASL property only " +
-                    "accepts a single value.");
+                    "accepts a single value");
     registerMessage(MSGID_LDAPAUTH_QOP_SINGLE_VALUED,
                     "The \"" + SASL_PROPERTY_QOP + "\" SASL property only " +
-                    "accepts a single value.");
+                    "accepts a single value");
     registerMessage(MSGID_LDAPAUTH_DIGESTMD5_QOP_NOT_SUPPORTED,
                     "The \"%s\" QoP mode is not supported by this client.  " +
-                    "Only the \"auth\" mode is currently available for use.");
+                    "Only the \"auth\" mode is currently available for use");
     // FIXME -- Update this message when auth-int and auth-conf are supported.
     registerMessage(MSGID_LDAPAUTH_DIGESTMD5_INVALID_QOP,
                     "The specified DIGEST-MD5 quality of protection mode " +
                     "\"%s\" is not valid.  The only QoP mode currently " +
-                    "supported is \"auth\".");
+                    "supported is \"auth\"");
     registerMessage(MSGID_LDAPAUTH_DIGEST_URI_SINGLE_VALUED,
                     "The \"" + SASL_PROPERTY_DIGEST_URI + "\" SASL property " +
-                    "only accepts a single value.");
+                    "only accepts a single value");
     registerMessage(MSGID_LDAPAUTH_NO_DIGESTMD5_SERVER_CREDENTIALS,
                     "The initial bind response from the server did not " +
                     "include any server SASL credentials containing the " +
                     "challenge information needed to complete the " +
-                    "DIGEST-MD5 authentication.");
+                    "DIGEST-MD5 authentication");
     registerMessage(MSGID_LDAPAUTH_DIGESTMD5_INVALID_TOKEN_IN_CREDENTIALS,
                     "The DIGEST-MD5 credentials provided by the server " +
                     "contained an invalid token of \"%s\" starting at " +
-                    "position %d.");
+                    "position %d");
     registerMessage(MSGID_LDAPAUTH_DIGESTMD5_INVALID_CHARSET,
                     "The DIGEST-MD5 credentials provided by the server " +
                     "specified the use of the \"%s\" character set.  The " +
                     "character set that may be specified in the DIGEST-MD5 " +
-                    "credentials is \"utf-8\".");
+                    "credentials is \"utf-8\"");
     registerMessage(MSGID_LDAPAUTH_REQUESTED_QOP_NOT_SUPPORTED_BY_SERVER,
                     "The requested QoP mode of \"%s\" is not listed as " +
                     "supported by the Directory Server.  The Directory " +
-                    "Server's list of supported QoP modes is:  \"%s\".");
+                    "Server's list of supported QoP modes is:  \"%s\"");
     registerMessage(MSGID_LDAPAUTH_DIGESTMD5_NO_NONCE,
                     "The server SASL credentials provided in response to the " +
                     "initial DIGEST-MD5 bind request did not include the " +
-                    "nonce to use to generate the authentication digests.");
+                    "nonce to use to generate the authentication digests");
     registerMessage(MSGID_LDAPAUTH_DIGESTMD5_CANNOT_CREATE_RESPONSE_DIGEST,
                     "An error occurred while attempting to generate the " +
-                    "response digest for the DIGEST-MD5 bind request:  %s.");
+                    "response digest for the DIGEST-MD5 bind request:  %s");
     registerMessage(MSGID_LDAPAUTH_DIGESTMD5_NO_RSPAUTH_CREDS,
                     "The DIGEST-MD5 bind response from the server did not " +
                     "include the \"rspauth\" element to provide a digest of " +
-                    "the response authentication information.");
+                    "the response authentication information");
     registerMessage(MSGID_LDAPAUTH_DIGESTMD5_COULD_NOT_DECODE_RSPAUTH,
                     "An error occurred while trying to decode the rspauth " +
                     "element of the DIGEST-MD5 bind response from the server " +
-                    "as a hexadecimal string:  %s.");
+                    "as a hexadecimal string:  %s");
     registerMessage(MSGID_LDAPAUTH_DIGESTMD5_COULD_NOT_CALCULATE_RSPAUTH,
                     "An error occurred while trying to calculate the " +
                     "expected rspauth element to compare against the value " +
                     "included in the DIGEST-MD5 response from the server:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_LDAPAUTH_DIGESTMD5_RSPAUTH_MISMATCH,
                     "The rpsauth element included in the DIGEST-MD5 bind " +
                     "response from the Directory Server was different from " +
-                    "the expected value calculated by the client.");
+                    "the expected value calculated by the client");
     registerMessage(MSGID_LDAPAUTH_DIGESTMD5_INVALID_CLOSING_QUOTE_POS,
                     "The DIGEST-MD5 response challenge could not be parsed " +
-                    "because it had an invalid quotation mark at position %d.");
+                    "because it had an invalid quotation mark at position %d");
     registerMessage(MSGID_LDAPAUTH_PROPERTY_DESCRIPTION_TRACE,
                     "Specifies a text string that may be written to the " +
                     "Directory Server error log as trace information for " +
-                    "the bind.");
+                    "the bind");
     registerMessage(MSGID_LDAPAUTH_PROPERTY_DESCRIPTION_AUTHID,
-                    "Specifies the authentication ID for the bind.");
+                    "Specifies the authentication ID for the bind");
     registerMessage(MSGID_LDAPAUTH_PROPERTY_DESCRIPTION_REALM,
                     "Specifies the realm into which the authentication is to " +
-                    "be performed.");
+                    "be performed");
     registerMessage(MSGID_LDAPAUTH_PROPERTY_DESCRIPTION_QOP,
-                    "Specifies the quality of protection to use for the bind.");
+                    "Specifies the quality of protection to use for the bind");
     registerMessage(MSGID_LDAPAUTH_PROPERTY_DESCRIPTION_DIGEST_URI,
-                    "Specifies the digest URI to use for the bind.");
+                    "Specifies the digest URI to use for the bind");
     registerMessage(MSGID_LDAPAUTH_PROPERTY_DESCRIPTION_AUTHZID,
-                    "Specifies the authorization ID to use for the bind.");
+                    "Specifies the authorization ID to use for the bind");
     registerMessage(MSGID_DESCRIPTION_SASL_PROPERTIES,
                     "SASL bind options");
     registerMessage(MSGID_DESCRIPTION_DONT_WRAP,
@@ -7537,197 +7537,197 @@
                     "Count the number of entries returned by the server");
     registerMessage(MSGID_LDAPAUTH_PROPERTY_DESCRIPTION_KDC,
                     "Specifies the KDC to use for the Kerberos " +
-                    "authentication.");
+                    "authentication");
     registerMessage(MSGID_LDAPAUTH_KDC_SINGLE_VALUED,
                     "The \"" + SASL_PROPERTY_KDC + "\" SASL property only " +
-                    "accepts a single value.");
+                    "accepts a single value");
     // FIXME -- Update this message when auth-int and auth-conf are supported.
     registerMessage(MSGID_LDAPAUTH_GSSAPI_INVALID_QOP,
                     "The specified GSSAPI quality of protection mode \"%s\" " +
                     "is not valid.  The only QoP mode currently supported is " +
-                    "\"auth\".");
+                    "\"auth\"");
     registerMessage(MSGID_LDAPAUTH_GSSAPI_CANNOT_CREATE_JAAS_CONFIG,
                     "An error occurred while trying to create the " +
                     "temporary JAAS configuration for GSSAPI " +
-                    "authentication:  %s.");
+                    "authentication:  %s");
     registerMessage(MSGID_LDAPAUTH_GSSAPI_LOCAL_AUTHENTICATION_FAILED,
                     "An error occurred while attempting to perform local " +
-                    "authentication to the Kerberos realm:  %s.");
+                    "authentication to the Kerberos realm:  %s");
     registerMessage(MSGID_LDAPAUTH_GSSAPI_REMOTE_AUTHENTICATION_FAILED,
                     "An error occurred while attempting to perform GSSAPI " +
-                    "authentication to the Directory Server:  %s.");
+                    "authentication to the Directory Server:  %s");
     registerMessage(MSGID_LDAPAUTH_NONSASL_RUN_INVOCATION,
                     "The LDAPAuthenticationHandler.run() method was called " +
-                    "for a non-SASL bind.  The backtrace for this call is %s.");
+                    "for a non-SASL bind.  The backtrace for this call is %s");
     registerMessage(MSGID_LDAPAUTH_UNEXPECTED_RUN_INVOCATION,
                     "The LDAPAuthenticationHandler.run() method was called " +
                     "for a SASL bind with an unexpected mechanism of " +
-                    "\"%s\".  The backtrace for this call is %s.");
+                    "\"%s\".  The backtrace for this call is %s");
     registerMessage(MSGID_LDAPAUTH_GSSAPI_CANNOT_CREATE_SASL_CLIENT,
                     "An error occurred while attempting to create a SASL " +
-                    "client to process the GSSAPI authentication:  %s.");
+                    "client to process the GSSAPI authentication:  %s");
     registerMessage(MSGID_LDAPAUTH_GSSAPI_CANNOT_CREATE_INITIAL_CHALLENGE,
                     "An error occurred while attempting to create the " +
-                    "initial challenge for GSSAPI authentication:  %s.");
+                    "initial challenge for GSSAPI authentication:  %s");
     registerMessage(MSGID_LDAPAUTH_GSSAPI_CANNOT_VALIDATE_SERVER_CREDS,
                     "An error occurred while trying to validate the SASL " +
                     "credentials provided by the Directory Server in the " +
-                    "GSSAPI bind response:  %s.");
+                    "GSSAPI bind response:  %s");
     registerMessage(MSGID_LDAPAUTH_GSSAPI_UNEXPECTED_SUCCESS_RESPONSE,
                     "The Directory Server unexpectedly returned a success " +
                     "response to the client even though the client does not " +
-                    "believe that the GSSAPI negotiation is complete.");
+                    "believe that the GSSAPI negotiation is complete");
     registerMessage(MSGID_LDAPAUTH_GSSAPI_BIND_FAILED,
-                    "The GSSAPI bind attempt failed.");
+                    "The GSSAPI bind attempt failed");
     registerMessage(MSGID_LDAPAUTH_NONSASL_CALLBACK_INVOCATION,
                     "The LDAPAuthenticationHandler.handle() method was " +
                     "called for a non-SASL bind.  The backtrace for this " +
-                    "call is %s.");
+                    "call is %s");
     registerMessage(MSGID_LDAPAUTH_UNEXPECTED_GSSAPI_CALLBACK,
                     "The LDAPAuthenticationHandler.handle() method was " +
                     "called during a GSSAPI bind attempt with an unexpected " +
-                    "callback type of %s.");
+                    "callback type of %s");
     registerMessage(MSGID_LDAPAUTH_UNEXPECTED_CALLBACK_INVOCATION,
                     "The LDAPAuthenticationHandler.handle() method was " +
                     "called for an unexpected SASL mechanism of %s.  The " +
-                    "backtrace for this call is %s.");
+                    "backtrace for this call is %s");
     registerMessage(MSGID_LDAPAUTH_PASSWORD_PROMPT,
                     "Password for user '%s':  ");
     registerMessage(MSGID_LDAPAUTH_CANNOT_SEND_WHOAMI_REQUEST,
                     "Cannot send the 'Who Am I?' request to the Directory " +
-                    "Server:  %s.");
+                    "Server:  %s");
     registerMessage(MSGID_LDAPAUTH_CANNOT_READ_WHOAMI_RESPONSE,
                     "Cannot read the 'Who Am I?' response from the Directory " +
-                    "Server:  %s.");
+                    "Server:  %s");
     registerMessage(MSGID_LDAPAUTH_WHOAMI_FAILED,
                     "The 'Who Am I?' request was rejected by the Directory " +
-                    "Server.");
+                    "Server");
 
 
     registerMessage(MSGID_DESCRIPTION_INVALID_VERSION,
                     "Invalid LDAP version number '%s'. Allowed values are " +
-                    "2 and 3.");
+                    "2 and 3");
     registerMessage(MSGID_SEARCH_INVALID_SEARCH_SCOPE,
-                    "Invalid scope %s specified for the search request.");
+                    "Invalid scope %s specified for the search request");
     registerMessage(MSGID_SEARCH_NO_FILTERS,
-                    "No filters specified for the search request.");
+                    "No filters specified for the search request");
     registerMessage(MSGID_PAGED_RESULTS_REQUIRES_SINGLE_FILTER,
                     "The simple paged results control may only be used with " +
-                    "a single search filter.");
+                    "a single search filter");
     registerMessage(MSGID_PAGED_RESULTS_CANNOT_DECODE,
                     "Unable to decode the simple paged results control from " +
-                    "the search response:  %s.");
+                    "the search response:  %s");
     registerMessage(MSGID_PAGED_RESULTS_RESPONSE_NOT_FOUND,
                     "The simple paged results response control was not found " +
-                    "in the search result done message from the server.");
+                    "in the search result done message from the server");
     registerMessage(MSGID_PSEARCH_MISSING_DESCRIPTOR,
                     "The request to use the persistent search control did " +
                     "not include a descriptor that indicates the options to " +
-                    "use with that control.");
+                    "use with that control");
     registerMessage(MSGID_PSEARCH_DOESNT_START_WITH_PS,
                     "The persistent search descriptor %s did not start with " +
-                    "the required 'ps' string.");
+                    "the required 'ps' string");
     registerMessage(MSGID_PSEARCH_INVALID_CHANGE_TYPE,
                     "The provided change type value %s is invalid.  The " +
                     "recognized change types are add, delete, modify, " +
-                    "modifydn, and any.");
+                    "modifydn, and any");
     registerMessage(MSGID_PSEARCH_INVALID_CHANGESONLY,
                     "The provided changesOnly value %s is invalid.  Allowed " +
                     "values are 1 to only return matching entries that have " +
                     "changed since the beginning of the search, or 0 to also " +
-                    "include existing entries that match the search criteria.");
+                    "include existing entries that match the search criteria");
     registerMessage(MSGID_PSEARCH_INVALID_RETURN_ECS,
                     "The provided returnECs value %s is invalid.  Allowed " +
                     "values are 1 to request that the entry change " +
                     "notification control be included in updated entries, or " +
-                    "0 to exclude the control from matching entries.");
+                    "0 to exclude the control from matching entries");
     registerMessage(MSGID_LDAP_ASSERTION_INVALID_FILTER,
                     "The search filter provided for the LDAP assertion " +
-                    "control was invalid:  %s.");
+                    "control was invalid:  %s");
     registerMessage(MSGID_LDAP_MATCHEDVALUES_INVALID_FILTER,
-                    "The provided matched values filter was invalid:  %s.");
+                    "The provided matched values filter was invalid:  %s");
     registerMessage(MSGID_LDAPMODIFY_PREREAD_NO_VALUE,
-                    "The pre-read response control did not include a value.");
+                    "The pre-read response control did not include a value");
     registerMessage(MSGID_LDAPMODIFY_PREREAD_CANNOT_DECODE_VALUE,
                     "An error occurred while trying to decode the entry " +
                     "contained in the value of the pre-read response " +
-                    "control:  %s.");
+                    "control:  %s");
     registerMessage(MSGID_LDAPMODIFY_PREREAD_ENTRY,
                     "Target entry before the operation:");
     registerMessage(MSGID_LDAPMODIFY_POSTREAD_NO_VALUE,
-                    "The post-read response control did not include a value.");
+                    "The post-read response control did not include a value");
     registerMessage(MSGID_LDAPMODIFY_POSTREAD_CANNOT_DECODE_VALUE,
                     "An error occurred while trying to decode the entry " +
                     "contained in the value of the post-read response " +
-                    "control:  %s.");
+                    "control:  %s");
     registerMessage(MSGID_LDAPMODIFY_POSTREAD_ENTRY,
                     "Target entry after the operation:");
     registerMessage(MSGID_LDAPMODIFY_DESCRIPTION_FILENAME,
-                    "Specifies the LDIF file containing the changes to apply.");
+                    "Specifies the LDIF file containing the changes to apply");
 
 
 
     registerMessage(MSGID_VERIFYINDEX_DESCRIPTION_BASE_DN,
                     "Specifies the base DN of a backend supporting indexing. " +
                     "Verification is performed on indexes within the scope " +
-                    "of the given base DN.");
+                    "of the given base DN");
     registerMessage(MSGID_VERIFYINDEX_DESCRIPTION_INDEX_NAME,
                     "Specifies the name of an index to be verified. For an " +
                     "attribute index this is simply an attribute name.  " +
                     "Multiple indexes may be verified for completeness, or " +
                     "all indexes if no indexes are specified.  An index is " +
                     "complete if each index value references all entries " +
-                    "containing that value.");
+                    "containing that value");
     registerMessage(MSGID_VERIFYINDEX_DESCRIPTION_VERIFY_CLEAN,
                     "Specifies that a single index should be verified to " +
                     "ensure it is clean.  An index is clean if each index " +
                     "value references only entries containing that value.  " +
-                    "Only one index at a time may be verified in this way.");
+                    "Only one index at a time may be verified in this way");
     registerMessage(MSGID_VERIFYINDEX_ERROR_DURING_VERIFY,
                     "An error occurred while attempting to perform index " +
-                    "verification:  %s.");
+                    "verification:  %s");
     registerMessage(MSGID_VERIFYINDEX_VERIFY_CLEAN_REQUIRES_SINGLE_INDEX,
                     "Only one index at a time may be verified for " +
-                    "cleanliness.");
+                    "cleanliness");
     registerMessage(MSGID_BACKEND_NO_INDEXING_SUPPORT,
-                    "The backend does not support indexing.");
+                    "The backend does not support indexing");
     registerMessage(MSGID_VERIFYINDEX_CANNOT_LOCK_BACKEND,
                     "An error occurred while attempting to acquire a shared " +
                     "lock for backend %s:  %s.  This generally means that " +
                     "some other process has an exclusive lock on this " +
                     "backend (e.g., an LDIF import or a restore).  The " +
-                    "index verification cannot continue.");
+                    "index verification cannot continue");
     registerMessage(MSGID_VERIFYINDEX_CANNOT_UNLOCK_BACKEND,
                     "An error occurred while attempting to release the " +
                     "shared lock for backend %s:  %s.  This lock should " +
                     "automatically be cleared when the verification process " +
-                    "exits, so no further action should be required.");
+                    "exits, so no further action should be required");
     registerMessage(MSGID_MULTIPLE_BACKENDS_FOR_BASE,
                     "Multiple Directory Server backends are configured to " +
-                    "support base DN \"%s\".");
+                    "support base DN \"%s\"");
     registerMessage(MSGID_NO_BACKENDS_FOR_BASE,
                     "None of the Directory Server backends are configured " +
-                    "to support the requested base DN \"%s\".");
+                    "to support the requested base DN \"%s\"");
 
     registerMessage(MSGID_REBUILDINDEX_TOOL_DESCRIPTION,
                     "This utility may be used to rebuild index data within " +
-                    "a backend based on the Berkeley DB Java Edition.");
+                    "a backend based on the Berkeley DB Java Edition");
     registerMessage(MSGID_REBUILDINDEX_DESCRIPTION_BASE_DN,
                     "Specifies the base DN of a backend supporting indexing. " +
                     "Rebuild is performed on indexes within the scope " +
-                    "of the given base DN.");
+                    "of the given base DN");
     registerMessage(MSGID_REBUILDINDEX_DESCRIPTION_INDEX_NAME,
                     "Specifies the names of index(es) to rebuild. For an " +
                     "attribute index this is simply an attribute name.  " +
-                    "At least one index must be specified for rebuild.");
+                    "At least one index must be specified for rebuild");
     registerMessage(MSGID_REBUILDINDEX_ERROR_DURING_REBUILD,
                     "An error occurred while attempting to perform index " +
-                    "rebuild:  %s.");
+                    "rebuild:  %s");
     registerMessage(MSGID_REBUILDINDEX_WRONG_BACKEND_TYPE,
-                    "The backend does not support rebuilding of indexes.");
+                    "The backend does not support rebuilding of indexes");
     registerMessage(MSGID_REBUILDINDEX_REQUIRES_AT_LEAST_ONE_INDEX,
                     "At least one index must be spcified for the rebuild " +
-                    "process.");
+                    "process");
 
     registerMessage(MSGID_BACKUPDB_DESCRIPTION_BACKEND_ID,
                     "Backend ID for the backend to archive");
@@ -7752,66 +7752,66 @@
                     "Sign the hash of the backup contents");
     registerMessage(MSGID_BACKUPDB_MULTIPLE_BACKENDS_FOR_ID,
                     "Multiple Directory Server backends are configured with " +
-                    "the requested backend ID \"%s\".");
+                    "the requested backend ID \"%s\"");
     registerMessage(MSGID_BACKUPDB_NO_BACKENDS_FOR_ID,
                     "None of the Directory Server backends are configured " +
-                    "with the requested backend ID \"%s\".");
+                    "with the requested backend ID \"%s\"");
     registerMessage(MSGID_BACKUPDB_CONFIG_ENTRY_MISMATCH,
                     "The configuration for the backend with backend ID %s is " +
                     "held in entry \"%s\", but other backups in the target " +
                     "backup directory %s were generated from a backend whose " +
-                    "configuration was held in configuration entry \"%s\".");
+                    "configuration was held in configuration entry \"%s\"");
     registerMessage(MSGID_BACKUPDB_INVALID_BACKUP_DIR,
                     "An error occurred while attempting to use the specified " +
-                    "path \"%s\" as the target directory for the backup:  %s.");
+                    "path \"%s\" as the target directory for the backup:  %s");
     registerMessage(MSGID_BACKUPDB_CANNOT_BACKUP,
                     "The target backend %s cannot be backed up using the " +
-                    "requested configuration:  %s.");
+                    "requested configuration:  %s");
     registerMessage(MSGID_BACKUPDB_ERROR_DURING_BACKUP,
                     "An error occurred while attempting to back up backend " +
-                    "%s with the requested configuration:  %s.");
+                    "%s with the requested configuration:  %s");
     registerMessage(MSGID_BACKUPDB_CANNOT_MIX_BACKUP_ALL_AND_BACKEND_ID,
                     "The %s and %s arguments may not be used together.  " +
-                    "Exactly one of them must be provided.");
+                    "Exactly one of them must be provided");
     registerMessage(MSGID_BACKUPDB_NEED_BACKUP_ALL_OR_BACKEND_ID,
                     "Neither the %s argument nor the %s argument was " +
-                    "provided.  Exactly one of them is required.");
+                    "provided.  Exactly one of them is required");
     registerMessage(MSGID_BACKUPDB_CANNOT_CREATE_BACKUP_DIR,
                     "An error occurred while attempting to create the backup " +
-                    "directory %s:  %s.");
+                    "directory %s:  %s");
     registerMessage(MSGID_BACKUPDB_BACKUP_NOT_SUPPORTED,
                     "Backend ID %s was included in the set of backends to " +
                     "archive, but this backend does not provide support for " +
-                    "a backup mechanism.  It will be skipped.");
+                    "a backup mechanism.  It will be skipped");
     registerMessage(MSGID_BACKUPDB_NO_BACKENDS_TO_ARCHIVE,
                     "None of the target backends provide a backup " +
-                    "mechanism.  The backup operation has been aborted.");
+                    "mechanism.  The backup operation has been aborted");
     registerMessage(MSGID_BACKUPDB_CANNOT_LOCK_BACKEND,
                     "An error occurred while attempting to acquire a shared " +
                     "lock for backend %s:  %s.  This generally means that " +
                     "some other process has exclusive access to this " +
                     "backend (e.g., a restore or an LDIF import).  This " +
-                    "backend will not be archived.");
+                    "backend will not be archived");
     registerMessage(MSGID_BACKUPDB_STARTING_BACKUP,
-                    "Starting backup for backend %s.");
+                    "Starting backup for backend %s");
     registerMessage(MSGID_BACKUPDB_CANNOT_PARSE_BACKUP_DESCRIPTOR,
                     "An error occurred while attempting to parse the backup " +
-                    "descriptor file %s:  %s.");
+                    "descriptor file %s:  %s");
     registerMessage(MSGID_BACKUPDB_CANNOT_UNLOCK_BACKEND,
                     "An error occurred while attempting to release the " +
                     "shared lock for backend %s:  %s.  This lock should " +
                     "automatically be cleared when the backup process exits, " +
-                    "so no further action should be required.");
+                    "so no further action should be required");
     registerMessage(MSGID_BACKUPDB_COMPLETED_WITH_ERRORS,
-                    "The backup process completed with one or more errors.");
+                    "The backup process completed with one or more errors");
     registerMessage(MSGID_BACKUPDB_COMPLETED_SUCCESSFULLY,
-                    "The backup process completed successfully.");
+                    "The backup process completed successfully");
     registerMessage(MSGID_BACKUPDB_INCREMENTAL_BASE_REQUIRES_INCREMENTAL,
                     "The use of the %s argument requires that the %s " +
-                    "argument is also provided.");
+                    "argument is also provided");
     registerMessage(MSGID_BACKUPDB_SIGN_REQUIRES_HASH,
                     "The use of the %s argument requires that the %s " +
-                    "argument is also provided.");
+                    "argument is also provided");
 
 
     registerMessage(MSGID_RESTOREDB_DESCRIPTION_BACKEND_ID,
@@ -7826,7 +7826,7 @@
                     "Verify the contents of the backup but do not restore it");
     registerMessage(MSGID_RESTOREDB_CANNOT_READ_BACKUP_DIRECTORY,
                     "An error occurred while attempting to examine the " +
-                    "set of backups contained in backup directory %s:  %s.");
+                    "set of backups contained in backup directory %s:  %s");
     registerMessage(MSGID_RESTOREDB_LIST_BACKUP_ID,
                     "Backup ID:          %s");
     registerMessage(MSGID_RESTOREDB_LIST_BACKUP_DATE,
@@ -7844,45 +7844,45 @@
     registerMessage(MSGID_RESTOREDB_LIST_DEPENDENCIES,
                     "Dependent Upon:     %s");
     registerMessage(MSGID_RESTOREDB_INVALID_BACKUP_ID,
-                    "The requested backup ID %s does not exist in %s.");
+                    "The requested backup ID %s does not exist in %s");
     registerMessage(MSGID_RESTOREDB_NO_BACKUPS_IN_DIRECTORY,
                     "There are no Directory Server backups contained in " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_RESTOREDB_NO_BACKENDS_FOR_DN,
                     "The backups contained in directory %s were taken from " +
                     "a Directory Server backend defined in configuration " +
-                    "entry %s but no such backend is available.");
+                    "entry %s but no such backend is available");
     registerMessage(MSGID_RESTOREDB_CANNOT_RESTORE,
                     "The Directory Server backend configured with backend ID " +
                     "%s does not provide a mechanism for restoring " +
-                    "backups.");
+                    "backups");
     registerMessage(MSGID_RESTOREDB_CANNOT_LOCK_BACKEND,
                     "An error occurred while attempting to acquire an " +
                     "exclusive lock for backend %s:  %s.  This generally " +
                     "means some other process is still using this backend " +
                     "(e.g., it is in use by the Directory Server or a " +
                     "backup or LDIF export is in progress.  The restore " +
-                    "cannot continue.");
+                    "cannot continue");
     registerMessage(MSGID_RESTOREDB_ERROR_DURING_BACKUP,
                     "An unexpected error occurred while attempting to " +
-                    "restore backup %s from %s:  %s.");
+                    "restore backup %s from %s:  %s");
     registerMessage(MSGID_RESTOREDB_CANNOT_UNLOCK_BACKEND,
                     "An error occurred while attempting to release the " +
                     "exclusive lock for backend %s:  %s.  This lock should " +
                     "automatically be cleared when the restore process " +
-                    "exits, so no further action should be required.");
+                    "exits, so no further action should be required");
     registerMessage(MSGID_DESCRIPTION_NOOP,
                     "Show what would be done but do not perform any operation");
     registerMessage(MSGID_DESCRIPTION_TYPES_ONLY,
                     "Only retrieve attribute names but not their values");
     registerMessage(MSGID_LDIF_FILE_CANNOT_OPEN_FOR_READ,
                     "An error occurred while attempting to open the " +
-                    "LDIF file %s for reading:  %s.");
+                    "LDIF file %s for reading:  %s");
     registerMessage(MSGID_LDIF_FILE_READ_ERROR,
                     "An error occurred while attempting to read the contents " +
-                    "of LDIF file %s:  %s.");
+                    "of LDIF file %s:  %s");
     registerMessage(MSGID_LDIF_FILE_INVALID_LDIF_ENTRY,
-                    "Error at or near line %d in LDIF file %s:  %s.");
+                    "Error at or near line %d in LDIF file %s:  %s");
 
 
     registerMessage(MSGID_STOPDS_DESCRIPTION_HOST,
@@ -7894,9 +7894,9 @@
     registerMessage(MSGID_STOPDS_DESCRIPTION_USESTARTTLS,
                     "Use StartTLS for secure communication with the server");
     registerMessage(MSGID_STOPDS_DESCRIPTION_BINDDN,
-                    "Specifies the DN to use to bind to the server.");
+                    "Specifies the DN to use to bind to the server");
     registerMessage(MSGID_STOPDS_DESCRIPTION_BINDPW,
-                    "Specifies the password to use to bind to the server.");
+                    "Specifies the password to use to bind to the server");
     registerMessage(MSGID_STOPDS_DESCRIPTION_BINDPWFILE,
                     "Bind password file");
     registerMessage(MSGID_STOPDS_DESCRIPTION_SASLOPTIONS,
@@ -7911,7 +7911,7 @@
                     "stopped");
     registerMessage(MSGID_STOPDS_CHECK_STOPPABILITY,
                     "Used to determine whether the server can be stopped "+
-                    "or not and the mode to be used to stop it.");
+                    "or not and the mode to be used to stop it");
     registerMessage(MSGID_STOPDS_DESCRIPTION_WINDOWS_NET_STOP,
                     "Used by the window service code to inform that stop-ds "+
                     "is being called from the window services after a call "+
@@ -7934,45 +7934,45 @@
     registerMessage(MSGID_STOPDS_DESCRIPTION_TSPWFILE,
                     "Certificate trust store PIN file");
     registerMessage(MSGID_STOPDS_DESCRIPTION_SHOWUSAGE,
-                    "Display this usage information.");
+                    "Display this usage information");
     registerMessage(MSGID_STOPDS_MUTUALLY_EXCLUSIVE_ARGUMENTS,
                     "ERROR:  You may not provide both the %s and the %s " +
-                    "arguments.");
+                    "arguments");
     registerMessage(MSGID_STOPDS_CANNOT_DECODE_STOP_TIME,
                     "ERROR:  Unable to decode the provided stop time.  It " +
                     "should be in the form YYYYMMDDhhmmssZ for UTC time or " +
-                    "YYYYMMDDhhmmss for local time.");
+                    "YYYYMMDDhhmmss for local time");
     registerMessage(MSGID_STOPDS_CANNOT_INITIALIZE_SSL,
-                    "ERROR:  Unable to perform SSL initialization:  %s.");
+                    "ERROR:  Unable to perform SSL initialization:  %s");
     registerMessage(MSGID_STOPDS_CANNOT_PARSE_SASL_OPTION,
                     "ERROR:  The provided SASL option string \"%s\" could " +
-                    "not be parsed in the form \"name=value\".");
+                    "not be parsed in the form \"name=value\"");
     registerMessage(MSGID_STOPDS_NO_SASL_MECHANISM,
                     "ERROR:  One or more SASL options were provided, but " +
                     "none of them were the \"mech\" option to specify which " +
-                    "SASL mechanism should be used.");
+                    "SASL mechanism should be used");
     registerMessage(MSGID_STOPDS_CANNOT_DETERMINE_PORT,
                     "ERROR:  Cannot parse the value of the %s argument as " +
-                    "an integer value between 1 and 65535:  %s.");
+                    "an integer value between 1 and 65535:  %s");
     registerMessage(MSGID_STOPDS_CANNOT_CONNECT,
                     "ERROR:  Cannot establish a connection to the " +
-                    "Directory Server:  %s.");
+                    "Directory Server:  %s");
     registerMessage(MSGID_STOPDS_UNEXPECTED_CONNECTION_CLOSURE,
                     "NOTICE:  The connection to the Directory Server was " +
                     "closed while waiting for a response to the shutdown " +
                     "request.  This likely means that the server has started " +
-                    "the shudown process.");
+                    "the shudown process");
     registerMessage(MSGID_STOPDS_IO_ERROR,
                     "ERROR:  An I/O error occurred while attempting to " +
-                    "communicate with the Directory Server:  %s.");
+                    "communicate with the Directory Server:  %s");
     registerMessage(MSGID_STOPDS_DECODE_ERROR,
                     "ERROR:  An error occurred while trying to decode the " +
-                    "response from the server:  %s.");
+                    "response from the server:  %s");
     registerMessage(MSGID_STOPDS_INVALID_RESPONSE_TYPE,
                     "ERROR:  Expected an add response message but got a %s " +
-                    "message instead.");
+                    "message instead");
     registerMessage(MSGID_STOPDS_SERVER_ALREADY_STOPPED,
-                    "Server already stopped.");
+                    "Server already stopped");
     registerMessage(MSGID_STOPDS_GOING_TO_STOP,
                     "Stopping Server...\n");
 
@@ -7981,317 +7981,317 @@
                     "Specifies the LDIF file containing the data to search.  " +
                     "Multiple files may be specified by providing the option " +
                     "multiple times.  If no files are provided, the data " +
-                    "will be read from standard input.");
+                    "will be read from standard input");
     registerMessage(MSGID_LDIFSEARCH_DESCRIPTION_BASEDN,
                     "The base DN for the search.  Multiple base DNs may be " +
                     "specified by providing the option multiple times.  If " +
-                    "no base DN is provided, then the root DSE will be used.");
+                    "no base DN is provided, then the root DSE will be used");
     registerMessage(MSGID_LDIFSEARCH_DESCRIPTION_SCOPE,
                     "The scope for the search.  It must be one of 'base', " +
                     "'one', 'sub', or 'subordinate'.  If it is not provided, " +
-                    "then 'sub' will be used.");
+                    "then 'sub' will be used");
     registerMessage(MSGID_LDIFSEARCH_DESCRIPTION_FILTER_FILE,
                     "The path to the file containing the search filter(s) " +
                     "to use.  If this is not provided, then the filter must " +
                     "be provided on the command line after all configuration " +
-                    "options.");
+                    "options");
     registerMessage(MSGID_LDIFSEARCH_DESCRIPTION_OUTPUT_FILE,
                     "The path to the output file to which the matching " +
                     "entries should be written.  If this is not provided, " +
-                    "then the data will be written to standard output.");
+                    "then the data will be written to standard output");
     registerMessage(MSGID_LDIFSEARCH_DESCRIPTION_OVERWRITE_EXISTING,
                     "Indicates that any existing output file should be " +
-                    "overwritten rather than appending to it.");
+                    "overwritten rather than appending to it");
     registerMessage(MSGID_LDIFSEARCH_DESCRIPTION_DONT_WRAP,
-                    "Indicates that long lines should not be wrapped.");
+                    "Indicates that long lines should not be wrapped");
     registerMessage(MSGID_LDIFSEARCH_DESCRIPTION_SIZE_LIMIT,
                     "Specifies the maximum number of matching entries to " +
-                    "return.");
+                    "return");
     registerMessage(MSGID_LDIFSEARCH_DESCRIPTION_TIME_LIMIT,
                     "Specifies the maximum length of time (in seconds) to " +
-                    "spend processing.");
+                    "spend processing");
     registerMessage(MSGID_LDIFSEARCH_NO_FILTER,
                     "No search filter was specified.  Either a filter file " +
-                    "or an individual search filter must be provided.");
+                    "or an individual search filter must be provided");
     registerMessage(MSGID_LDIFSEARCH_CANNOT_INITIALIZE_JMX,
                     "An error occurred while attempting to initialize the " +
                     "Directory Server JMX subsystem based on the information " +
-                    "in configuration file %s:  %s.");
+                    "in configuration file %s:  %s");
     registerMessage(MSGID_LDIFSEARCH_CANNOT_INITIALIZE_CONFIG,
                     "An error occurred while attempting to process the " +
-                    "Directory Server configuration file %s:  %s.");
+                    "Directory Server configuration file %s:  %s");
     registerMessage(MSGID_LDIFSEARCH_CANNOT_INITIALIZE_SCHEMA,
                     "An error occurred while attempting to initialize the " +
                     "Directory Server schema based on the information in " +
-                    "configuration file %s:  %s.");
+                    "configuration file %s:  %s");
     registerMessage(MSGID_LDIFSEARCH_CANNOT_PARSE_FILTER,
                     "An error occurred while attempting to parse search " +
-                    "filter '%s':  %s.");
+                    "filter '%s':  %s");
     registerMessage(MSGID_LDIFSEARCH_CANNOT_PARSE_BASE_DN,
                     "An error occurred while attempting to parse base DN " +
-                    "'%s':  %s.");
+                    "'%s':  %s");
     registerMessage(MSGID_LDIFSEARCH_CANNOT_PARSE_TIME_LIMIT,
                     "An error occurred while attempting to parse the " +
-                    "time limit as an integer:  %s.");
+                    "time limit as an integer:  %s");
     registerMessage(MSGID_LDIFSEARCH_CANNOT_PARSE_SIZE_LIMIT,
                     "An error occurred while attempting to parse the " +
-                    "size limit as an integer:  %s.");
+                    "size limit as an integer:  %s");
     registerMessage(MSGID_LDIFSEARCH_CANNOT_CREATE_READER,
                     "An error occurred while attempting to create the LDIF " +
-                    "reader:  %s.");
+                    "reader:  %s");
     registerMessage(MSGID_LDIFSEARCH_CANNOT_CREATE_WRITER,
                     "An error occurred while attempting to create the LDIF " +
-                    "writer used to return matching entries:  %s.");
+                    "writer used to return matching entries:  %s");
     registerMessage(MSGID_LDIFSEARCH_TIME_LIMIT_EXCEEDED,
                     "The specified time limit has been exceeded during " +
-                    "search processing.");
+                    "search processing");
     registerMessage(MSGID_LDIFSEARCH_SIZE_LIMIT_EXCEEDED,
                     "The specified size limit has been exceeded during " +
-                    "search processing.");
+                    "search processing");
     registerMessage(MSGID_LDIFSEARCH_CANNOT_READ_ENTRY_RECOVERABLE,
                     "An error occurred while attempting to read an entry " +
                     "from the LDIF content:  %s.  Skipping this entry and " +
-                    "continuing processing.");
+                    "continuing processing");
     registerMessage(MSGID_LDIFSEARCH_CANNOT_READ_ENTRY_FATAL,
                     "An error occurred while attempting to read an entry " +
                     "from the LDIF content:  %s.  Unable to continue " +
-                    "processing.");
+                    "processing");
     registerMessage(MSGID_LDIFSEARCH_ERROR_DURING_PROCESSING,
                     "An unexpected error occurred during search processing:  " +
-                    "%s.");
+                    "%s");
 
 
     registerMessage(MSGID_LDIFDIFF_DESCRIPTION_SOURCE_LDIF,
-                    "Specifies the LDIF file to use as the source data.");
+                    "Specifies the LDIF file to use as the source data");
     registerMessage(MSGID_LDIFDIFF_DESCRIPTION_TARGET_LDIF,
-                    "Specifies the LDIF file to use as the target data.");
+                    "Specifies the LDIF file to use as the target data");
     registerMessage(MSGID_LDIFDIFF_DESCRIPTION_OUTPUT_LDIF,
                     "Specifies the file to which the output should be " +
-                    "written.");
+                    "written");
     registerMessage(MSGID_LDIFDIFF_DESCRIPTION_SINGLE_VALUE_CHANGES,
                     "Indicates that each attribute-level change should be " +
                     "written as a separate modification per attribute value " +
-                    "rather than one modification per entry.");
+                    "rather than one modification per entry");
     registerMessage(MSGID_LDIFDIFF_DESCRIPTION_OVERWRITE_EXISTING,
                     "Indicates that any existing output file should be " +
-                    "overwritten rather than appending to it.");
+                    "overwritten rather than appending to it");
     registerMessage(MSGID_LDIFDIFF_CANNOT_INITIALIZE_JMX,
                     "An error occurred while attempting to initialize the " +
                     "Directory Server JMX subsystem based on the information " +
-                    "in configuration file %s:  %s.");
+                    "in configuration file %s:  %s");
     registerMessage(MSGID_LDIFDIFF_CANNOT_INITIALIZE_CONFIG,
                     "An error occurred while attempting to process the " +
-                    "Directory Server configuration file %s:  %s.");
+                    "Directory Server configuration file %s:  %s");
     registerMessage(MSGID_LDIFDIFF_CANNOT_INITIALIZE_SCHEMA,
                     "An error occurred while attempting to initialize the " +
                     "Directory Server schema based on the information in " +
-                    "configuration file %s:  %s.");
+                    "configuration file %s:  %s");
     registerMessage(MSGID_LDIFDIFF_CANNOT_OPEN_SOURCE_LDIF,
                     "An error occurred while attempting to open source LDIF " +
-                    "%s:  %s.");
+                    "%s:  %s");
     registerMessage(MSGID_LDIFDIFF_ERROR_READING_SOURCE_LDIF,
                     "An error occurred while reading the contents of source " +
-                    "LDIF %s:  %s.");
+                    "LDIF %s:  %s");
     registerMessage(MSGID_LDIFDIFF_CANNOT_OPEN_TARGET_LDIF,
                     "An error occurred while attempting to open target LDIF " +
-                    "%s:  %s.");
+                    "%s:  %s");
     registerMessage(MSGID_LDIFDIFF_ERROR_READING_TARGET_LDIF,
                     "An error occurred while reading the contents of target " +
-                    "LDIF %s:  %s.");
+                    "LDIF %s:  %s");
     registerMessage(MSGID_LDIFDIFF_CANNOT_OPEN_OUTPUT,
                     "An error occurred while attempting to open the LDIF " +
-                    "writer for the diff output:  %s.");
+                    "writer for the diff output:  %s");
     registerMessage(MSGID_LDIFDIFF_NO_DIFFERENCES,
                     "No differences were detected between the source and " +
-                    "target LDIF files.");
+                    "target LDIF files");
     registerMessage(MSGID_LDIFDIFF_ERROR_WRITING_OUTPUT,
                     "An error occurred while attempting to write the diff " +
-                    "output:  %s.");
+                    "output:  %s");
 
 
     registerMessage(MSGID_CONFIGDS_DESCRIPTION_LDAP_PORT,
                     "Specifies the port on which the Directory Server should " +
-                    "listen for LDAP communication.");
+                    "listen for LDAP communication");
     registerMessage(MSGID_CONFIGDS_DESCRIPTION_LDAPS_PORT,
                     "Specifies the port on which the Directory Server should " +
-                    "listen for LDAPS communication.");
+                    "listen for LDAPS communication");
     registerMessage(MSGID_CONFIGDS_DESCRIPTION_JMX_PORT,
                     "Specifies the port on which the Directory Server should " +
-                    "listen for JMX communication.");
+                    "listen for JMX communication");
     registerMessage(MSGID_CONFIGDS_DESCRIPTION_ENABLE_START_TLS,
-                    "Specifies whether to enable or not StartTLS.");
+                    "Specifies whether to enable or not StartTLS");
     registerMessage(MSGID_CONFIGDS_DESCRIPTION_KEYMANAGER_PROVIDER_DN,
                     "Specifies the DN of the key manager provider to use " +
-                    "for SSL and/or StartTLS.");
+                    "for SSL and/or StartTLS");
     registerMessage(MSGID_CONFIGDS_DESCRIPTION_TRUSTMANAGER_PROVIDER_DN,
                     "Specifies the DN of the trust manager provider to use " +
-                    "for SSL and/or StartTLS.");
+                    "for SSL and/or StartTLS");
     registerMessage(MSGID_CONFIGDS_DESCRIPTION_KEYMANAGER_PATH,
                     "Specifies the path of the keystore to be used by the " +
-                    "key manager provider.");
+                    "key manager provider");
     registerMessage(MSGID_CONFIGDS_DESCRIPTION_CERTNICKNAME,
                     "Specifies the nickname of the certificate that the " +
                     "connection handler should use when accepting SSL-based " +
-                    "connections or performing StartTLS negotiation.");
+                    "connections or performing StartTLS negotiation");
     registerMessage(MSGID_CONFIGDS_CANNOT_PARSE_KEYMANAGER_PROVIDER_DN,
                     "An error occurred while attempting to parse key manager " +
-                    "provider DN value \"%s\" as a DN:  %s.");
+                    "provider DN value \"%s\" as a DN:  %s");
     registerMessage(MSGID_CONFIGDS_CANNOT_PARSE_TRUSTMANAGER_PROVIDER_DN,
                     "An error occurred while attempting to parse trust " +
-                    "manager provider DN value \"%s\" as a DN:  %s.");
+                    "manager provider DN value \"%s\" as a DN:  %s");
     registerMessage(MSGID_CONFIGDS_CANNOT_ENABLE_STARTTLS,
                     "An error occurred while attempting to enable StartTLS: " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_CONFIGDS_CANNOT_ENABLE_KEYMANAGER,
                     "An error occurred while attempting to enable key " +
-                    "manager provider entry: %s.");
+                    "manager provider entry: %s");
     registerMessage(MSGID_CONFIGDS_CANNOT_ENABLE_TRUSTMANAGER,
                     "An error occurred while attempting to enable trust " +
-                    "manager provider entry: %s.");
+                    "manager provider entry: %s");
     registerMessage(MSGID_CONFIGDS_CANNOT_UPDATE_KEYMANAGER_REFERENCE,
                     "An error occurred while attempting to update the key " +
                     "manager provider DN used for LDAPS communication: " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_CONFIGDS_CANNOT_UPDATE_TRUSTMANAGER_REFERENCE,
                     "An error occurred while attempting to update the trust " +
                     "manager provider DN used for LDAPS communication: " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_CONFIGDS_KEYMANAGER_PROVIDER_DN_REQUIRED,
                     "ERROR:  You must provide the %s argument when providing " +
-                    "the %s argument.");
+                    "the %s argument");
     registerMessage(MSGID_CONFIGDS_CANNOT_UPDATE_CERT_NICKNAME,
                     "An error occurred while attempting to update the " +
                     "nickname of the certificate that the " +
                     "connection handler should use when accepting SSL-based " +
-                    "connections or performing StartTLS negotiation: %s.");
+                    "connections or performing StartTLS negotiation: %s");
     registerMessage(MSGID_CONFIGDS_DESCRIPTION_BASE_DN,
                     "Specifies the base DN for user information in the " +
                     "Directory Server.  Multiple base DNs may be provided " +
-                    "by using this option multiple times.");
+                    "by using this option multiple times");
     registerMessage(MSGID_CONFIGDS_DESCRIPTION_ROOT_DN,
                     "Specifies the DN for the initial root user for the " +
-                    "Directory Server.");
+                    "Directory Server");
     registerMessage(MSGID_CONFIGDS_DESCRIPTION_ROOT_PW,
                     "Specifies the password for the initial root user for " +
-                    "the Directory Server.");
+                    "the Directory Server");
     registerMessage(MSGID_CONFIGDS_DESCRIPTION_ROOT_PW_FILE,
                     "Specifies the path to a file containing the password " +
-                    "for the initial root user for the Directory Server.");
+                    "for the initial root user for the Directory Server");
     registerMessage(MSGID_CONFIGDS_CANNOT_ACQUIRE_SERVER_LOCK,
                     "An error occurred while attempting to acquire the " +
                     "server-wide lock file %s:  %s.  This generally means " +
                     "that the Directory Server is running, or another tool " +
-                    "that requires exclusive access to the server is in use.");
+                    "that requires exclusive access to the server is in use");
     registerMessage(MSGID_CONFIGDS_CANNOT_INITIALIZE_JMX,
                     "An error occurred while attempting to initialize the " +
                     "Directory Server JMX subsystem based on the information " +
-                    "in configuration file %s:  %s.");
+                    "in configuration file %s:  %s");
     registerMessage(MSGID_CONFIGDS_CANNOT_INITIALIZE_CONFIG,
                     "An error occurred while attempting to process the " +
-                    "Directory Server configuration file %s:  %s.");
+                    "Directory Server configuration file %s:  %s");
     registerMessage(MSGID_CONFIGDS_CANNOT_INITIALIZE_SCHEMA,
                     "An error occurred while attempting to initialize the " +
                     "Directory Server schema based on the information in " +
-                    "configuration file %s:  %s.");
+                    "configuration file %s:  %s");
     registerMessage(MSGID_CONFIGDS_CANNOT_PARSE_BASE_DN,
                     "An error occurred while attempting to parse base DN " +
-                    "value \"%s\" as a DN:  %s.");
+                    "value \"%s\" as a DN:  %s");
     registerMessage(MSGID_CONFIGDS_CANNOT_PARSE_ROOT_DN,
                     "An error occurred while attempting to parse root DN " +
-                    "value \"%s\" as a DN:  %s.");
+                    "value \"%s\" as a DN:  %s");
     registerMessage(MSGID_CONFIGDS_NO_ROOT_PW,
                     "The DN for the initial root user was provided, but no " +
                     "corresponding password was given.  If the root DN is " +
-                    "specified then the password must also be provided.");
+                    "specified then the password must also be provided");
     registerMessage(MSGID_CONFIGDS_CANNOT_UPDATE_BASE_DN,
                     "An error occurred while attempting to update the base " +
-                    "DN(s) for user data in the Directory Server:  %s.");
+                    "DN(s) for user data in the Directory Server:  %s");
     registerMessage(MSGID_CONFIGDS_CANNOT_UPDATE_LDAP_PORT,
                     "An error occurred while attempting to update the port " +
-                    "on which to listen for LDAP communication:  %s.");
+                    "on which to listen for LDAP communication:  %s");
     registerMessage(MSGID_CONFIGDS_CANNOT_UPDATE_LDAPS_PORT,
                     "An error occurred while attempting to update the port " +
-                    "on which to listen for LDAPS communication:  %s.");
+                    "on which to listen for LDAPS communication:  %s");
     registerMessage(MSGID_CONFIGDS_CANNOT_UPDATE_JMX_PORT,
                     "An error occurred while attempting to update the port " +
-                    "on which to listen for JMX communication:  %s.");
+                    "on which to listen for JMX communication:  %s");
     registerMessage(MSGID_CONFIGDS_CANNOT_UPDATE_ROOT_USER,
                     "An error occurred while attempting to update the entry " +
-                    "for the initial Directory Server root user:  %s.");
+                    "for the initial Directory Server root user:  %s");
     registerMessage(MSGID_CONFIGDS_CANNOT_WRITE_UPDATED_CONFIG,
                     "An error occurred while writing the updated Directory " +
-                    "Server configuration:  %s.");
+                    "Server configuration:  %s");
     registerMessage(MSGID_CONFIGDS_NO_CONFIG_CHANGES,
-                    "ERROR:  No configuration changes were specified.");
+                    "ERROR:  No configuration changes were specified");
     registerMessage(MSGID_CONFIGDS_WROTE_UPDATED_CONFIG,
                     "Successfully wrote the updated Directory Server " +
-                    "configuration.");
+                    "configuration");
 
 
     registerMessage(MSGID_INSTALLDS_DESCRIPTION_TESTONLY,
-                    "Just verify that the JVM can be started properly.");
+                    "Just verify that the JVM can be started properly");
     registerMessage(MSGID_INSTALLDS_DESCRIPTION_PROGNAME,
-                    "The setup command used to invoke this program.");
+                    "The setup command used to invoke this program");
     registerMessage(MSGID_INSTALLDS_DESCRIPTION_CLI,
-                    "Launch the installer in command-line mode (no GUI).");
+                    "Launch the installer in command-line mode (no GUI)");
     registerMessage(MSGID_INSTALLDS_DESCRIPTION_SILENT,
-                    "Perform a silent installation.");
+                    "Perform a silent installation");
     registerMessage(MSGID_INSTALLDS_DESCRIPTION_BASEDN,
                     "Specifies the base DN for user information in the " +
                     "Directory Server.  Multiple base DNs may be provided " +
-                    "by using this option multiple times.");
+                    "by using this option multiple times");
     registerMessage(MSGID_INSTALLDS_DESCRIPTION_ADDBASE,
                     "Indicates whether to create the base entry in the " +
-                    "Directory Server database.");
+                    "Directory Server database");
     registerMessage(MSGID_INSTALLDS_DESCRIPTION_IMPORTLDIF,
                     "Specifies the path to an LDIF file containing data that " +
                     "should be added to the Directory Server database.  " +
                     "Multiple LDIF files may be provided by using this " +
-                    "option multiple times.");
+                    "option multiple times");
     registerMessage(MSGID_INSTALLDS_DESCRIPTION_SAMPLE_DATA,
                     "Specifies that the database should be populated with " +
-                    "the specified number of sample entries.");
+                    "the specified number of sample entries");
     registerMessage(MSGID_INSTALLDS_DESCRIPTION_LDAPPORT,
                     "Specifies the port on which the Directory Server should " +
-                    "listen for LDAP communication.");
+                    "listen for LDAP communication");
     registerMessage(MSGID_INSTALLDS_DESCRIPTION_JMXPORT,
                     "Specifies the port on which the Directory Server should " +
-                    "listen for JMX communication.");
+                    "listen for JMX communication");
     registerMessage(MSGID_INSTALLDS_DESCRIPTION_SKIPPORT,
                     "Skip the check to determine whether the specified LDAP " +
-                    "port is usable.");
+                    "port is usable");
     registerMessage(MSGID_INSTALLDS_DESCRIPTION_ROOTDN,
                     "Specifies the DN for the initial root user for the " +
-                    "Directory Server.");
+                    "Directory Server");
     registerMessage(MSGID_INSTALLDS_DESCRIPTION_ROOTPW,
                     "Specifies the password for the initial root user for " +
-                    "the Directory Server.");
+                    "the Directory Server");
     registerMessage(MSGID_INSTALLDS_DESCRIPTION_ROOTPWFILE,
                     "Specifies the path to a file containing the password " +
-                    "for the initial root user for the Directory Server.");
+                    "for the initial root user for the Directory Server");
     registerMessage(MSGID_INSTALLDS_DESCRIPTION_NO_WINDOWS_SERVICE,
-                    "Do not enable OpenDS to run as a Windows Service.");
+                    "Do not enable OpenDS to run as a Windows Service");
     registerMessage(MSGID_INSTALLDS_DESCRIPTION_HELP,
-                    "Display this usage information.");
+                    "Display this usage information");
     registerMessage(MSGID_INSTALLDS_NO_CONFIG_FILE,
                     "ERROR:  No configuration file path was provided (use " +
-                    "the %s argument).");
+                    "the %s argument)");
     registerMessage(MSGID_INSTALLDS_INITIALIZING,
-                    "Please wait while the setup program initializes....");
+                    "Please wait while the setup program initializes...");
     registerMessage(MSGID_INSTALLDS_CANNOT_INITIALIZE_JMX,
                     "An error occurred while attempting to initialize the " +
                     "Directory Server JMX subsystem based on the information " +
-                    "in configuration file %s:  %s.");
+                    "in configuration file %s:  %s");
     registerMessage(MSGID_INSTALLDS_CANNOT_INITIALIZE_CONFIG,
                     "An error occurred while attempting to process the " +
-                    "Directory Server configuration file %s:  %s.");
+                    "Directory Server configuration file %s:  %s");
     registerMessage(MSGID_INSTALLDS_CANNOT_INITIALIZE_SCHEMA,
                     "An error occurred while attempting to initialize the " +
                     "Directory Server schema based on the information in " +
-                    "configuration file %s:  %s.");
+                    "configuration file %s:  %s");
     registerMessage(MSGID_INSTALLDS_CANNOT_PARSE_DN,
                     "An error occurred while attempting to parse the string " +
-                    "\"%s\" as a valid DN:  %s.");
+                    "\"%s\" as a valid DN:  %s");
     registerMessage(MSGID_INSTALLDS_PROMPT_BASEDN,
                     "What do you wish to use as the base DN for the " +
                     "directory data?");
@@ -8300,10 +8300,10 @@
                     "information from an existing LDIF file?");
     registerMessage(MSGID_INSTALLDS_PROMPT_IMPORT_FILE,
                     "Please specify the path to the LDIF file containing " +
-                    "the data to import.");
+                    "the data to import");
     registerMessage(MSGID_INSTALLDS_TWO_CONFLICTING_ARGUMENTS,
                     "ERROR:  You may not provide both the %s and the %s " +
-                    "arguments at the same time.");
+                    "arguments at the same time");
     registerMessage(MSGID_INSTALLDS_PROMPT_ADDBASE,
                     "Would you like to have the base %s entry automatically " +
                     "created in the directory database?");
@@ -8320,18 +8320,18 @@
                     "already be in use, or you may not have permission to " +
                     "bind to it.  On UNIX-based operating systems, non-root " +
                     "users may not be allowed to bind to ports 1 through " +
-                    "1024.");
+                    "1024");
     registerMessage(MSGID_INSTALLDS_CANNOT_BIND_TO_PORT,
                     "ERROR:  Unable to bind to port %d.  This port may " +
                     "already be in use, or you may not have permission to " +
-                    "bind to it.");
+                    "bind to it");
     registerMessage(MSGID_INSTALLDS_PROMPT_ROOT_DN,
                     "What would you like to use as the initial root user DN " +
                     "for the Directory Server?");
     registerMessage(MSGID_INSTALLDS_NO_ROOT_PASSWORD,
                     "ERROR:  No password was provided for the initial root "+
                     "user.  When performing a silent installation, this must " +
-                    "be provided using either the %s or the %s argument.");
+                    "be provided using either the %s or the %s argument");
     registerMessage(MSGID_INSTALLDS_PROMPT_ROOT_PASSWORD,
                     "Please provide the password to use for the initial root " +
                     "user");
@@ -8339,51 +8339,51 @@
                     "Please re-enter the password for confirmation");
     registerMessage(MSGID_INSTALLDS_STATUS_CONFIGURING_DS,
                     "Applying the requested configuration to the " +
-                    "Directory Server....");
+                    "Directory Server...");
     registerMessage(MSGID_INSTALLDS_STATUS_CREATING_BASE_LDIF,
                     "Creating a temporary LDIF file with the initial base " +
-                    "entry contents....");
+                    "entry contents...");
     registerMessage(MSGID_INSTALLDS_CANNOT_CREATE_BASE_ENTRY_LDIF,
                     "An error occurred while attempting to create the " +
-                    "base LDIF file:  %s.");
+                    "base LDIF file:  %s");
     registerMessage(MSGID_INSTALLDS_STATUS_IMPORTING_LDIF,
                     "Importing the LDIF data into the Directory Server " +
-                    "database....");
+                    "database...");
     registerMessage(MSGID_INSTALLDS_IMPORT_SUCCESSFUL,
-                    "Import complete.");
+                    "Import complete");
     registerMessage(MSGID_INSTALLDS_IMPORT_UNSUCCESSFUL,
-                    "Import failed.");
+                    "Import failed");
     registerMessage(MSGID_INSTALLDS_STATUS_SUCCESS,
                     "The " + SHORT_NAME + " setup process has completed " +
-                    "successfully.");
+                    "successfully");
     registerMessage(MSGID_INSTALLDS_PROMPT_VALUE_YES, "yes");
     registerMessage(MSGID_INSTALLDS_PROMPT_VALUE_NO, "no");
     registerMessage(MSGID_INSTALLDS_INVALID_YESNO_RESPONSE,
                     "ERROR:  The provided value could not be interpreted as " +
                     "a yes or no response.  Please enter a response of " +
-                    "either \"yes\" or \"no\".");
+                    "either \"yes\" or \"no\"");
     registerMessage(MSGID_INSTALLDS_INVALID_INTEGER_RESPONSE,
                     "ERROR:  The provided response could not be interpreted " +
                     "as an integer.  Please provide the repsonse as an " +
-                    "integer value.");
+                    "integer value");
     registerMessage(MSGID_INSTALLDS_INTEGER_BELOW_LOWER_BOUND,
                     "ERROR:  The provided value is less than the lowest " +
-                    "allowed value of %d.");
+                    "allowed value of %d");
     registerMessage(MSGID_INSTALLDS_INTEGER_ABOVE_UPPER_BOUND,
                     "ERROR:  The provided value is greater than the largest " +
-                    "allowed value of %d.");
+                    "allowed value of %d");
     registerMessage(MSGID_INSTALLDS_INVALID_DN_RESPONSE,
                     "ERROR:  The provided response could not be interpreted " +
-                    "as an LDAP DN.");
+                    "as an LDAP DN");
     registerMessage(MSGID_INSTALLDS_INVALID_STRING_RESPONSE,
-                    "ERROR:  The response value may not be an empty string.");
+                    "ERROR:  The response value may not be an empty string");
     registerMessage(MSGID_INSTALLDS_INVALID_PASSWORD_RESPONSE,
-                    "ERROR:  The password value may not be an empty string.");
+                    "ERROR:  The password value may not be an empty string");
     registerMessage(MSGID_INSTALLDS_PASSWORDS_DONT_MATCH,
-                    "ERROR:  The provided password values do not match.");
+                    "ERROR:  The provided password values do not match");
     registerMessage(MSGID_INSTALLDS_ERROR_READING_FROM_STDIN,
                     "ERROR:  Unexpected failure while reading from standard " +
-                    "input:  %s.");
+                    "input:  %s");
     registerMessage(MSGID_INSTALLDS_HEADER_POPULATE_TYPE,
                     "Options for populating the database:");
     registerMessage(MSGID_INSTALLDS_POPULATE_OPTION_BASE_ONLY,
@@ -8397,423 +8397,423 @@
     registerMessage(MSGID_INSTALLDS_PROMPT_POPULATE_CHOICE,
                     "Database population selection:");
     registerMessage(MSGID_INSTALLDS_NO_SUCH_LDIF_FILE,
-                    "ERROR:  The specified LDIF file %s does not exist.");
+                    "ERROR:  The specified LDIF file %s does not exist");
     registerMessage(MSGID_INSTALLDS_PROMPT_NUM_ENTRIES,
                     "Please specify the number of user entries to generate:");
     registerMessage(MSGID_INSTALLDS_CANNOT_CREATE_TEMPLATE_FILE,
                     "ERROR:  Cannot create the template file for generating " +
-                    "sample data:  %s.");
+                    "sample data:  %s");
     registerMessage(MSGID_INSTALLDS_ENABLING_WINDOWS_SERVICE,
-                    "Enabling OpenDS as a Windows service....");
+                    "Enabling OpenDS as a Windows service...");
 
 
     registerMessage(MSGID_MAKELDIF_TAG_INVALID_ARGUMENT_COUNT,
                     "Invalid number of arguments provided for tag %s on line " +
-                    "number %d of the template file:  expected %d, got %d.");
+                    "number %d of the template file:  expected %d, got %d");
     registerMessage(MSGID_MAKELDIF_TAG_INVALID_ARGUMENT_RANGE_COUNT,
                     "Invalid number of arguments provided for tag %s on line " +
                     "number %d of the template file:  expected between %d " +
-                    "and %d, got %d.");
+                    "and %d, got %d");
     registerMessage(MSGID_MAKELDIF_TAG_UNDEFINED_ATTRIBUTE,
                     "Undefined attribute %s referenced on line %d of the " +
-                    "template file.");
+                    "template file");
     registerMessage(MSGID_MAKELDIF_TAG_INTEGER_BELOW_LOWER_BOUND,
                     "Value %d is below the lowest allowed value of %d for " +
-                    "tag %s on line %d of the template file.");
+                    "tag %s on line %d of the template file");
     registerMessage(MSGID_MAKELDIF_TAG_CANNOT_PARSE_AS_INTEGER,
                     "Cannot parse value \"%s\" as an integer for tag %s on " +
-                    "line %d of the template file.");
+                    "line %d of the template file");
     registerMessage(MSGID_MAKELDIF_TAG_INTEGER_ABOVE_UPPER_BOUND,
                     "Value %d is above the largest allowed value of %d for " +
-                    "tag %s on line %d of the template file.");
+                    "tag %s on line %d of the template file");
     registerMessage(MSGID_MAKELDIF_TAG_INVALID_EMPTY_STRING_ARGUMENT,
                     "Argument %d for tag %s on line number %d may not be an " +
-                    "empty string.");
+                    "empty string");
     registerMessage(MSGID_MAKELDIF_TAG_CANNOT_PARSE_AS_BOOLEAN,
                     "Cannot parse value \"%s\" as a Boolean value for tag %s " +
                     "on line %d of the template file.  The value must be " +
-                    "either 'true' or 'false'.");
+                    "either 'true' or 'false'");
     registerMessage(MSGID_MAKELDIF_UNDEFINED_BRANCH_SUBORDINATE,
                     "The branch with entry DN %s references a subordinate " +
                     "template named %s which is not defined in the template " +
-                    "file.");
+                    "file");
     registerMessage(MSGID_MAKELDIF_CANNOT_LOAD_TAG_CLASS,
-                    "Unable to load class %s for use as a MakeLDIF tag.");
+                    "Unable to load class %s for use as a MakeLDIF tag");
     registerMessage(MSGID_MAKELDIF_CANNOT_INSTANTIATE_TAG,
-                    "Cannot instantiate class %s as a MakeLDIF tag.");
+                    "Cannot instantiate class %s as a MakeLDIF tag");
     registerMessage(MSGID_MAKELDIF_CONFLICTING_TAG_NAME,
                     "Cannot register the tag defined in class %s because " +
                     "the tag name %s conflicts with the name of another " +
-                    "tag that has already been registered.");
+                    "tag that has already been registered");
     registerMessage(MSGID_MAKELDIF_WARNING_UNDEFINED_CONSTANT,
                     "Possible reference to an undefined constant %s on line " +
-                    "%d.");
+                    "%d");
     registerMessage(MSGID_MAKELDIF_DEFINE_MISSING_EQUALS,
                     "The constant definition on line %d is missing an " +
-                    "equal sign to delimit the constant name from the value.");
+                    "equal sign to delimit the constant name from the value");
     registerMessage(MSGID_MAKELDIF_DEFINE_NAME_EMPTY,
                     "The constant definition on line %d does not include a " +
-                    "name for the constant.");
+                    "name for the constant");
     registerMessage(MSGID_MAKELDIF_CONFLICTING_CONSTANT_NAME,
                     "The definition for constant %s on line %d conflicts " +
                     "with an earlier constant definition included in the " +
-                    "template.");
+                    "template");
     registerMessage(MSGID_MAKELDIF_WARNING_DEFINE_VALUE_EMPTY,
                     "Constant %s defined on line %d has not been assigned a " +
-                    "value.");
+                    "value");
     registerMessage(MSGID_MAKELDIF_CONFLICTING_BRANCH_DN,
                     "The branch definition %s starting on line %d conflicts " +
                     "with an earlier branch definition contained in the " +
-                    "template file.");
+                    "template file");
     registerMessage(MSGID_MAKELDIF_CONFLICTING_TEMPLATE_NAME,
                     "The template definition %s starting on line %d " +
                     "conflicts with an earlier template definition contained " +
-                    "in the template file.");
+                    "in the template file");
     registerMessage(MSGID_MAKELDIF_UNEXPECTED_TEMPLATE_FILE_LINE,
                     "Unexpected template line \"%s\" encountered on line %d " +
-                    "of the template file.");
+                    "of the template file");
     registerMessage(MSGID_MAKELDIF_UNDEFINED_TEMPLATE_SUBORDINATE,
                     "The template named %s references a subordinate template " +
-                    "named %s which is not defined in the template file.");
+                    "named %s which is not defined in the template file");
     registerMessage(MSGID_MAKELDIF_TEMPLATE_MISSING_RDN_ATTR,
                     "The template named %s includes RDN attribute %s that " +
-                    "is not assigned a value in that template.");
+                    "is not assigned a value in that template");
     registerMessage(MSGID_MAKELDIF_CANNOT_DECODE_BRANCH_DN,
                     "Unable to decode branch DN \"%s\" on line %d of the " +
-                    "template file.");
+                    "template file");
     registerMessage(MSGID_MAKELDIF_BRANCH_SUBORDINATE_TEMPLATE_NO_COLON,
                     "Subordinate template definition on line %d for branch " +
                     "%s is missing a colon to separate the template name " +
-                    "from the number of entries.");
+                    "from the number of entries");
     registerMessage(MSGID_MAKELDIF_BRANCH_SUBORDINATE_INVALID_NUM_ENTRIES,
                     "Subordinate template definition on line %d for branch " +
                     "%s specified invalid number of entries %d for template " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_MAKELDIF_BRANCH_SUBORDINATE_ZERO_ENTRIES,
                     "Subordinate template definition on line %d for branch " +
                     "%s specifies that zero entries of type %s should be " +
-                    "generated.");
+                    "generated");
     registerMessage(MSGID_MAKELDIF_BRANCH_SUBORDINATE_CANT_PARSE_NUMENTRIES,
                     "Unable to parse the number of entries for template %s " +
                     "as an integer for the subordinate template definition " +
-                    "on line %d for branch %s.");
+                    "on line %d for branch %s");
     registerMessage(MSGID_MAKELDIF_TEMPLATE_SUBORDINATE_TEMPLATE_NO_COLON,
                     "Subordinate template definition on line %d for template " +
                     "%s is missing a colon to separate the template name " +
-                    "from the number of entries.");
+                    "from the number of entries");
     registerMessage(MSGID_MAKELDIF_TEMPLATE_SUBORDINATE_INVALID_NUM_ENTRIES,
                     "Subordinate template definition on line %d for template " +
                     "%s specified invalid number of entries %d for " +
-                    "subordinate template %s.");
+                    "subordinate template %s");
     registerMessage(MSGID_MAKELDIF_TEMPLATE_SUBORDINATE_ZERO_ENTRIES,
                     "Subordinate template definition on line %d for template " +
                     "%s specifies that zero entries of type %s should be " +
-                    "generated.");
+                    "generated");
     registerMessage(MSGID_MAKELDIF_TEMPLATE_SUBORDINATE_CANT_PARSE_NUMENTRIES,
                     "Unable to parse the number of entries for template %s " +
                     "as an integer for the subordinate template definition " +
-                    "on line %d for template %s.");
+                    "on line %d for template %s");
     registerMessage(MSGID_MAKELDIF_NO_COLON_IN_BRANCH_EXTRA_LINE,
                     "There is no colon to separate the attribute name from " +
                     "the value pattern on line %s of the template file in " +
-                    "the definition for branch %s.");
+                    "the definition for branch %s");
     registerMessage(MSGID_MAKELDIF_NO_ATTR_IN_BRANCH_EXTRA_LINE,
                     "There is no attribute name before the colon on line %d " +
-                    "of the template file in the definition for branch %s.");
+                    "of the template file in the definition for branch %s");
     registerMessage(MSGID_MAKELDIF_NO_VALUE_IN_BRANCH_EXTRA_LINE,
                     "The value pattern for line %s of the template file in " +
-                    "the definition for branch %s is empty.");
+                    "the definition for branch %s is empty");
     registerMessage(MSGID_MAKELDIF_INCOMPLETE_TAG,
                     "Line %d of the template file contains an incomplete " +
                     "tag that starts with either '<' or '{' but does get " +
-                    "closed.");
+                    "closed");
     registerMessage(MSGID_MAKELDIF_NO_COLON_IN_TEMPLATE_LINE,
                     "There is no colon to separate the attribute name from " +
                     "the value pattern on line %s of the template file in " +
-                    "the definition for template %s.");
+                    "the definition for template %s");
     registerMessage(MSGID_MAKELDIF_NO_ATTR_IN_TEMPLATE_LINE,
                     "There is no attribute name before the colon on line %d " +
-                    "of the template file in the definition for template %s.");
+                    "of the template file in the definition for template %s");
     registerMessage(MSGID_MAKELDIF_NO_VALUE_IN_TEMPLATE_LINE,
                     "The value pattern for line %s of the template file in " +
-                    "the definition for template %s is empty.");
+                    "the definition for template %s is empty");
     registerMessage(MSGID_MAKELDIF_NO_SUCH_TAG,
                     "An undefined tag %s is referenced on line %d of the " +
-                    "template file.");
+                    "template file");
     registerMessage(MSGID_MAKELDIF_CANNOT_INSTANTIATE_NEW_TAG,
                     "An unexpected error occurred while trying to create a " +
                     "new instance of tag %s referenced on line %d of the " +
-                    "template file:  %s.");
+                    "template file:  %s");
     registerMessage(MSGID_MAKELDIF_TAG_NOT_ALLOWED_IN_BRANCH,
                     "Tag %s referenced on line %d of the template file is " +
-                    "not allowed for use in branch definitions.");
+                    "not allowed for use in branch definitions");
     registerMessage(MSGID_MAKELDIF_DESCRIPTION_RESOURCE_PATH,
                     "Specifies the path to look for MakeLDIF resources " +
                     "(e.g., data files) not found in the current working " +
-                    "directory or template directory path.");
+                    "directory or template directory path");
     registerMessage(MSGID_MAKELDIF_DESCRIPTION_TEMPLATE,
                     "The path to the template file with information about " +
-                    "the LDIF data to generate.");
+                    "the LDIF data to generate");
     registerMessage(MSGID_MAKELDIF_DESCRIPTION_LDIF,
-                    "The path to the LDIF file to be written.");
+                    "The path to the LDIF file to be written");
     registerMessage(MSGID_MAKELDIF_DESCRIPTION_SEED,
                     "The seed to use to initialize the random number " +
-                    "generator.");
+                    "generator");
     registerMessage(MSGID_MAKELDIF_DESCRIPTION_HELP,
-                    "Show this usage information.");
+                    "Show this usage information");
     registerMessage(MSGID_MAKELDIF_CANNOT_INITIALIZE_JMX,
                     "An error occurred while attempting to initialize the " +
                     "Directory Server JMX subsystem based on the information " +
-                    "in configuration file %s:  %s.");
+                    "in configuration file %s:  %s");
     registerMessage(MSGID_MAKELDIF_CANNOT_INITIALIZE_CONFIG,
                     "An error occurred while attempting to process the " +
-                    "Directory Server configuration file %s:  %s.");
+                    "Directory Server configuration file %s:  %s");
     registerMessage(MSGID_MAKELDIF_CANNOT_INITIALIZE_SCHEMA,
                     "An error occurred while attempting to initialize the " +
                     "Directory Server schema based on the information in " +
-                    "configuration file %s:  %s.");
+                    "configuration file %s:  %s");
     registerMessage(MSGID_MAKELDIF_IOEXCEPTION_DURING_PARSE,
                     "An error occurred while attempting to read the " +
-                    "template file:  %s.");
+                    "template file:  %s");
     registerMessage(MSGID_MAKELDIF_EXCEPTION_DURING_PARSE,
                     "An error occurred while attempting to parse the " +
-                    "template file:  %s.");
+                    "template file:  %s");
     registerMessage(MSGID_MAKELDIF_TAG_INVALID_FORMAT_STRING,
                     "Cannot parse value \"%s\" as an valid format string for " +
-                    "tag %s on line %d of the template file.");
+                    "tag %s on line %d of the template file");
     registerMessage(MSGID_MAKELDIF_TAG_NO_RANDOM_TYPE_ARGUMENT,
                     "The random tag on line %d of the template file does " +
                     "not include an argument to specify the type of random " +
-                    "value that should be generated.");
+                    "value that should be generated");
     registerMessage(MSGID_MAKELDIF_TAG_WARNING_EMPTY_VALUE,
                     "The value generated from the random tag on line %d of " +
-                    "the template file will always be an empty string.");
+                    "the template file will always be an empty string");
     registerMessage(MSGID_MAKELDIF_TAG_UNKNOWN_RANDOM_TYPE,
                     "The random tag on line %d of the template file " +
-                    "references an unknown random type of %s.");
+                    "references an unknown random type of %s");
     registerMessage(MSGID_MAKELDIF_COULD_NOT_FIND_TEMPLATE_FILE,
-                    "Could not find template file %s.");
+                    "Could not find template file %s");
     registerMessage(MSGID_MAKELDIF_NO_SUCH_RESOURCE_DIRECTORY,
-                    "The specified resource directory %s could not be found.");
+                    "The specified resource directory %s could not be found");
     registerMessage(MSGID_MAKELDIF_RESOURCE_DIRECTORY_NOT_DIRECTORY,
                     "The specified resource directory %s exists but is not a " +
-                    "directory.");
+                    "directory");
     registerMessage(MSGID_MAKELDIF_TAG_CANNOT_FIND_FILE,
                     "Cannot find file %s referenced by tag %s on line %d of " +
-                    "the template file.");
+                    "the template file");
     registerMessage(MSGID_MAKELDIF_TAG_INVALID_FILE_ACCESS_MODE,
                     "Invalid file access mode %s for tag %s on line %d of " +
                     "the template file.  It must be either \"sequential\" or " +
-                    "\"random\".");
+                    "\"random\"");
     registerMessage(MSGID_MAKELDIF_TAG_CANNOT_READ_FILE,
                     "An error occurred while trying to read file %s " +
                     "referenced by tag %s on line %d of the template file:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_MAKELDIF_UNABLE_TO_CREATE_LDIF,
                     "An error occurred while attempting to open LDIF file %s " +
-                    "for writing:  %s.");
+                    "for writing:  %s");
     registerMessage(MSGID_MAKELDIF_ERROR_WRITING_LDIF,
                     "An error occurred while writing data to LDIF file %s:  " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_MAKELDIF_PROCESSED_N_ENTRIES,
-                    "Processed %d entries.");
+                    "Processed %d entries");
     registerMessage(MSGID_MAKELDIF_CANNOT_WRITE_ENTRY,
                     "An error occurred while attempting to write entry %s to " +
-                    "LDIF:  %s.");
+                    "LDIF:  %s");
     registerMessage(MSGID_MAKELDIF_PROCESSING_COMPLETE,
-                    "LDIF processing complete.  %d entries written.");
+                    "LDIF processing complete.  %d entries written");
 
 
     registerMessage(MSGID_LDIFMODIFY_CANNOT_ADD_ENTRY_TWICE,
                     "Entry %s is added twice in the set of changes to apply, " +
-                    "which is not supported by the LDIF modify tool.");
+                    "which is not supported by the LDIF modify tool");
     registerMessage(MSGID_LDIFMODIFY_CANNOT_DELETE_AFTER_ADD,
                     "Entry %s cannot be deleted because it was previously " +
                     "added in the set of changes.  This is not supported by " +
-                    "the LDIF modify tool.");
+                    "the LDIF modify tool");
     registerMessage(MSGID_LDIFMODIFY_CANNOT_MODIFY_ADDED_OR_DELETED,
                     "Cannot modify entry %s because it was previously added " +
                     "or deleted in the set of changes.  This is not " +
-                    "supported by the LDIF modify tool.");
+                    "supported by the LDIF modify tool");
     registerMessage(MSGID_LDIFMODIFY_MODDN_NOT_SUPPORTED,
                     "The modify DN operation targeted at entry %s cannot be " +
                     "processed because modify DN operations are not " +
-                    "supported by the LDIF modify tool.");
+                    "supported by the LDIF modify tool");
     registerMessage(MSGID_LDIFMODIFY_UNKNOWN_CHANGETYPE,
-                    "Entry %s has an unknown changetype of %s.");
+                    "Entry %s has an unknown changetype of %s");
     registerMessage(MSGID_LDIFMODIFY_ADD_ALREADY_EXISTS,
                     "Unable to add entry %s because it already exists in " +
-                    "the data set.");
+                    "the data set");
     registerMessage(MSGID_LDIFMODIFY_DELETE_NO_SUCH_ENTRY,
                     "Unable to delete entry %s because it does not exist " +
-                    "in the data set.");
+                    "in the data set");
     registerMessage(MSGID_LDIFMODIFY_MODIFY_NO_SUCH_ENTRY,
                     "Unable to modify entry %s because it does not exist " +
-                    "in the data set.");
+                    "in the data set");
     registerMessage(MSGID_LDIFMODIFY_DESCRIPTION_SOURCE,
                     "Specifies the LDIF file containing the data to be " +
-                    "updated.");
+                    "updated");
     registerMessage(MSGID_LDIFMODIFY_DESCRIPTION_CHANGES,
-                    "Specifies the LDIF file containing the changes to apply.");
+                    "Specifies the LDIF file containing the changes to apply");
     registerMessage(MSGID_LDIFMODIFY_DESCRIPTION_TARGET,
                     "Specifies the file to which the updated data should be " +
-                    "written.");
+                    "written");
     registerMessage(MSGID_LDIFMODIFY_DESCRIPTION_HELP,
-                    "Displays this usage information.");
+                    "Displays this usage information");
     registerMessage(MSGID_LDIFMODIFY_CANNOT_INITIALIZE_JMX,
                     "An error occurred while attempting to initialize the " +
                     "Directory Server JMX subsystem based on the information " +
-                    "in configuration file %s:  %s.");
+                    "in configuration file %s:  %s");
     registerMessage(MSGID_LDIFMODIFY_CANNOT_INITIALIZE_CONFIG,
                     "An error occurred while attempting to process the " +
-                    "Directory Server configuration file %s:  %s.");
+                    "Directory Server configuration file %s:  %s");
     registerMessage(MSGID_LDIFMODIFY_CANNOT_INITIALIZE_SCHEMA,
                     "An error occurred while attempting to initialize the " +
                     "Directory Server schema based on the information in " +
-                    "configuration file %s:  %s.");
+                    "configuration file %s:  %s");
     registerMessage(MSGID_LDIFMODIFY_SOURCE_DOES_NOT_EXIST,
-                    "The source LDIF file %s does not exist.");
+                    "The source LDIF file %s does not exist");
     registerMessage(MSGID_LDIFMODIFY_CANNOT_OPEN_SOURCE,
-                    "Unable to open the source LDIF file %s:  %s.");
+                    "Unable to open the source LDIF file %s:  %s");
     registerMessage(MSGID_LDIFMODIFY_CHANGES_DOES_NOT_EXIST,
-                    "The changes LDIF file %s does not exist.");
+                    "The changes LDIF file %s does not exist");
     registerMessage(MSGID_LDIFMODIFY_CANNOT_OPEN_CHANGES,
-                    "Unable to open the changes LDIF file %s:  %s.");
+                    "Unable to open the changes LDIF file %s:  %s");
     registerMessage(MSGID_LDIFMODIFY_CANNOT_OPEN_TARGET,
-                    "Unable to open the target LDIF file %s for writing:  %s.");
+                    "Unable to open the target LDIF file %s for writing:  %s");
     registerMessage(MSGID_LDIFMODIFY_ERROR_PROCESSING_LDIF,
                     "An error occurred while processing the requested " +
-                    "changes:  %s.");
+                    "changes:  %s");
 
 
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_HOST,
-                    "Specifies the address of the Directory Server system.");
+                    "Specifies the address of the Directory Server system");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_PORT,
                     "Specifies the port in which the Directory Server is " +
-                    "listening for LDAP client connections.");
+                    "listening for LDAP client connections");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_BIND_DN,
-                    "Specifies the DN to use to bind to the server.");
+                    "Specifies the DN to use to bind to the server");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_BIND_PW,
-                    "Specifies the password to use to bind to the server.");
+                    "Specifies the password to use to bind to the server");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_BIND_PW_FILE,
                     "Specifies the path to a file containing the password to "+
-                    "use to bind to the server.");
+                    "use to bind to the server");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_AUTHZID,
                     "Specifies the authorization ID for the user entry whose " +
-                    "password should be changed.");
+                    "password should be changed");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_PROVIDE_DN_FOR_AUTHZID,
                     "Indicates that the bind DN should be used as the " +
-                    "authorization ID for the password modify operation.");
+                    "authorization ID for the password modify operation");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_NEWPW,
                     "Specifies the new password to provide for the target " +
-                    "user.");
+                    "user");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_NEWPWFILE,
                     "Specifies the path to a file containing the new " +
-                    "password to provide for the target user.");
+                    "password to provide for the target user");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_CURRENTPW,
-                    "Specifies the current password for the target user.");
+                    "Specifies the current password for the target user");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_CURRENTPWFILE,
                     "Specifies the path to a file containing the current " +
-                    "password for the target user.");
+                    "password for the target user");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_USE_SSL,
                     "Use SSL to secure the communication with the Directory " +
-                    "Server.");
+                    "Server");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_USE_STARTTLS,
                     "Use StartTLS to secure the communication with the " +
-                    "Directory Server.");
+                    "Directory Server");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_BLIND_TRUST,
                     "Blindly trust any SSL certificate presented by the " +
-                    "server.");
+                    "server");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_KEYSTORE,
                     "The path to the keystore to use when establishing " +
-                    "SSL/TLS communication with the server.");
+                    "SSL/TLS communication with the server");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_KEYSTORE_PIN,
-                    "The PIN needed to access the contents of the keystore.");
+                    "The PIN needed to access the contents of the keystore");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_KEYSTORE_PINFILE,
                     "The path to a file containing the PIN needed " +
-                    "to access the contents of the keystore.");
+                    "to access the contents of the keystore");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_TRUSTSTORE,
                     "The path to the trust store to use when establishing " +
-                    "SSL/TLS communication with the server.");
+                    "SSL/TLS communication with the server");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_TRUSTSTORE_PIN,
                     "The PIN needed to access the contents of the trust " +
-                    "store.");
+                    "store");
     registerMessage(MSGID_LDAPPWMOD_DESCRIPTION_TRUSTSTORE_PINFILE,
                     "The path to a file containing the PIN needed to access" +
-                    "the contents of the trust store.");
+                    "the contents of the trust store");
     registerMessage(MSGID_LDAPPWMOD_CONFLICTING_ARGS,
-                    "The %s and %s arguments may not be provided together.");
+                    "The %s and %s arguments may not be provided together");
     registerMessage(MSGID_LDAPPWMOD_BIND_DN_AND_PW_MUST_BE_TOGETHER,
                     "If either a bind DN or bind password is provided, then " +
-                    "the other must be given as well.");
+                    "the other must be given as well");
     registerMessage(MSGID_LDAPPWMOD_ANON_REQUIRES_AUTHZID_AND_CURRENTPW,
                     "If a bind DN and password are not provided, then an " +
-                    "authorization ID and current password must be given.");
+                    "authorization ID and current password must be given");
     registerMessage(MSGID_LDAPPWMOD_DEPENDENT_ARGS,
                     "If the %s argument is provided, then the  %s argument " +
-                    "must also be given.");
+                    "must also be given");
     registerMessage(MSGID_LDAPPWMOD_ERROR_INITIALIZING_SSL,
-                    "Unable to initialize SSL/TLS support:  %s.");
+                    "Unable to initialize SSL/TLS support:  %s");
     registerMessage(MSGID_LDAPPWMOD_CANNOT_CONNECT,
                     "An error occurred while attempting to connect to the" +
-                    "Directory Server:  %s.");
+                    "Directory Server:  %s");
     registerMessage(MSGID_LDAPPWMOD_CANNOT_SEND_PWMOD_REQUEST,
-                    "Unable to send the LDAP password modify request:  %s.");
+                    "Unable to send the LDAP password modify request:  %s");
     registerMessage(MSGID_LDAPPWMOD_CANNOT_READ_PWMOD_RESPONSE,
-                    "Unable to read the LDAP password modify response:  %s.");
+                    "Unable to read the LDAP password modify response:  %s");
     registerMessage(MSGID_LDAPPWMOD_FAILED,
                     "The LDAP password modify operation failed with result " +
-                    "code %d.");
+                    "code %d");
     registerMessage(MSGID_LDAPPWMOD_FAILURE_ERROR_MESSAGE,
-                    "Error Message:  %s.");
+                    "Error Message:  %s");
     registerMessage(MSGID_LDAPPWMOD_FAILURE_MATCHED_DN,
-                    "Matched DN:  %s.");
+                    "Matched DN:  %s");
     registerMessage(MSGID_LDAPPWMOD_SUCCESSFUL,
-                    "The LDAP password modify operation was successful.");
+                    "The LDAP password modify operation was successful");
     registerMessage(MSGID_LDAPPWMOD_ADDITIONAL_INFO,
-                    "Additional Info:  %s.");
+                    "Additional Info:  %s");
     registerMessage(MSGID_LDAPPWMOD_PWPOLICY_WARNING,
-                    "Password Policy Warning:  %s = %d.");
+                    "Password Policy Warning:  %s = %d");
     registerMessage(MSGID_LDAPPWMOD_PWPOLICY_ERROR,
-                    "Password Policy Error:  %s.");
+                    "Password Policy Error:  %s");
     registerMessage(MSGID_LDAPPWMOD_CANNOT_DECODE_PWPOLICY_CONTROL,
                     "Unable to decode the password policy response control:  " +
-                     "%s.");
+                     "%s");
     registerMessage(MSGID_LDAPPWMOD_GENERATED_PASSWORD,
-                    "Generated Password:  %s.");
+                    "Generated Password:  %s");
     registerMessage(MSGID_LDAPPWMOD_UNRECOGNIZED_VALUE_TYPE,
                     "Unable to decode the password modify response value " +
-                    "because it contained an invalid element type of %s.");
+                    "because it contained an invalid element type of %s");
     registerMessage(MSGID_LDAPPWMOD_COULD_NOT_DECODE_RESPONSE_VALUE,
                     "Unable to decode the password modify response value:  " +
-                    "%s.");
+                    "%s");
 
 
     registerMessage(MSGID_WAIT4DEL_DESCRIPTION_TARGET_FILE,
-                    "Specifies the path to the file to watch for deletion.");
+                    "Specifies the path to the file to watch for deletion");
     registerMessage(MSGID_WAIT4DEL_DESCRIPTION_LOG_FILE,
                     "Specifies the path to a file containing log output to " +
-                    "monitor.");
+                    "monitor");
     registerMessage(MSGID_WAIT4DEL_DESCRIPTION_OUTPUT_FILE,
                     "Specifies the path to a file to which the command will " +
-                    "write the output.");
+                    "write the output");
     registerMessage(MSGID_WAIT4DEL_DESCRIPTION_TIMEOUT,
                     "The maximum length of time in seconds to wait for the " +
-                    "target file to be deleted before exiting.");
+                    "target file to be deleted before exiting");
     registerMessage(MSGID_WAIT4DEL_DESCRIPTION_HELP,
-                    "Displays this usage information.");
+                    "Displays this usage information");
     registerMessage(MSGID_WAIT4DEL_CANNOT_OPEN_LOG_FILE,
-                    "WARNING:  Unable to open log file %s for reading:  %s.");
+                    "WARNING:  Unable to open log file %s for reading:  %s");
     registerMessage(MSGID_WAIT4DEL_CANNOT_OPEN_OUTPUT_FILE,
                     "WARNING:  Unable to open output file %s for writing:  "+
-                    "%s.");
+                    "%s");
 
 
     registerMessage(MSGID_LDAPCOMPARE_NO_DNS,
-                    "No entry DNs provided for the compare operation.");
+                    "No entry DNs provided for the compare operation");
     registerMessage(MSGID_LDAPCOMPARE_NO_ATTR,
                     "No attribute was specified to use as the target for " +
-                    "the comparison.");
+                    "the comparison");
     registerMessage(MSGID_LDAPCOMPARE_INVALID_ATTR_STRING,
                     "Invalid attribute string '%s'.  The attribute string " +
                     "must be in one of the following forms:  " +
@@ -8828,38 +8828,38 @@
     registerMessage(MSGID_LDAPSEARCH_ACCTUSABLE_HEADER,
                     "# Account Usability Response Control");
     registerMessage(MSGID_LDAPSEARCH_ACCTUSABLE_IS_USABLE,
-                    "#   The account is usable.");
+                    "#   The account is usable");
     registerMessage(MSGID_LDAPSEARCH_ACCTUSABLE_TIME_UNTIL_EXPIRATION,
-                    "#   Time until password expiration:  %s.");
+                    "#   Time until password expiration:  %s");
     registerMessage(MSGID_LDAPSEARCH_ACCTUSABLE_NOT_USABLE,
-                    "#   The account is not usable.");
+                    "#   The account is not usable");
     registerMessage(MSGID_LDAPSEARCH_ACCTUSABLE_ACCT_INACTIVE,
-                    "#   The account has been deactivated.");
+                    "#   The account has been deactivated");
     registerMessage(MSGID_LDAPSEARCH_ACCTUSABLE_PW_RESET,
-                    "#   The password has been reset.");
+                    "#   The password has been reset");
     registerMessage(MSGID_LDAPSEARCH_ACCTUSABLE_PW_EXPIRED,
-                    "#   The password has expired.");
+                    "#   The password has expired");
     registerMessage(MSGID_LDAPSEARCH_ACCTUSABLE_REMAINING_GRACE,
-                    "#   Number of grace logins remaining:  %d.");
+                    "#   Number of grace logins remaining:  %d");
     registerMessage(MSGID_LDAPSEARCH_ACCTUSABLE_LOCKED,
-                    "#   The account is locked.");
+                    "#   The account is locked");
     registerMessage(MSGID_LDAPSEARCH_ACCTUSABLE_TIME_UNTIL_UNLOCK,
-                    "#   Time until the account is unlocked:  %s.");
+                    "#   Time until the account is unlocked:  %s");
     registerMessage(MSGID_LDAPSEARCH_MATCHING_ENTRY_COUNT,
-                    "# Total number of matching entries:  %d.");
+                    "# Total number of matching entries:  %d");
 
 
     registerMessage(MSGID_TOOL_CONFLICTING_ARGS,
                     "You may not provide both the --%s and the --%s " +
-                    "arguments.");
+                    "arguments");
     registerMessage(MSGID_TOOL_INVALID_CONTROL_STRING,
-                    "Invalid control specification '%s'.");
+                    "Invalid control specification '%s'");
     registerMessage(MSGID_TOOL_SASLEXTERNAL_NEEDS_SSL_OR_TLS,
                     "SASL EXTERNAL authentication may only be requested if " +
-                    "SSL or StartTLS is used.");
+                    "SSL or StartTLS is used");
     registerMessage(MSGID_TOOL_SASLEXTERNAL_NEEDS_KEYSTORE,
                     "SASL EXTERNAL authentication may only be used if a " +
-                    "client certificate keystore is specified.");
+                    "client certificate keystore is specified");
     registerMessage(MSGID_TOOL_RESULT_CODE,
                     "Result Code:  %d (%s)");
     registerMessage(MSGID_TOOL_ERROR_MESSAGE,
@@ -8870,68 +8870,68 @@
 
     registerMessage(MSGID_BACKUPDB_TOOL_DESCRIPTION,
                     "This utility may be used to back up one or more " +
-                    "Directory Server backends.");
+                    "Directory Server backends");
     registerMessage(MSGID_CONFIGDS_TOOL_DESCRIPTION,
                     "This utility may be used to define a base configuration " +
-                    "for the Directory Server.");
+                    "for the Directory Server");
     registerMessage(MSGID_ENCPW_TOOL_DESCRIPTION,
                     "This utility may be used to encode user passwords with " +
                     "a specified storage scheme, or to determine whether a " +
                     "given clear-text value matches a provided encoded " +
-                    "password.");
+                    "password");
     registerMessage(MSGID_LDIFEXPORT_TOOL_DESCRIPTION,
                     "This utility may be used to export data from a " +
-                    "Directory Server backend in LDIF form.");
+                    "Directory Server backend in LDIF form");
     registerMessage(MSGID_LDIFIMPORT_TOOL_DESCRIPTION,
                     "This utility may be used to import LDIF data into a " +
-                    "Directory Server backend.");
+                    "Directory Server backend");
     registerMessage(MSGID_INSTALLDS_TOOL_DESCRIPTION,
                     "This utility may be used to define a base configuration " +
-                    "for the Directory Server.");
+                    "for the Directory Server");
     registerMessage(MSGID_LDAPCOMPARE_TOOL_DESCRIPTION,
                     "This utility may be used to perform LDAP compare " +
-                    "operations in the Directory Server.");
+                    "operations in the Directory Server");
     registerMessage(MSGID_LDAPDELETE_TOOL_DESCRIPTION,
                     "This utility may be used to perform LDAP delete " +
-                    "operations in the Directory Server.");
+                    "operations in the Directory Server");
     registerMessage(MSGID_LDAPMODIFY_TOOL_DESCRIPTION,
                     "This utility may be used to perform LDAP modify, add, " +
                     "delete, and modify DN operations in the Directory " +
-                    "Server.");
+                    "Server");
     registerMessage(MSGID_LDAPPWMOD_TOOL_DESCRIPTION,
                     "This utility may be used to perform LDAP password " +
-                    "modify operations in the Directory Server.");
+                    "modify operations in the Directory Server");
     registerMessage(MSGID_LDAPSEARCH_TOOL_DESCRIPTION,
                     "This utility may be used to perform LDAP search " +
-                    "operations in the Directory Server.");
+                    "operations in the Directory Server");
     registerMessage(MSGID_LDIFDIFF_TOOL_DESCRIPTION,
                     "This utility may be used to compare two LDIF files " +
-                    "and report the differences in LDIF format.");
+                    "and report the differences in LDIF format");
     registerMessage(MSGID_LDIFMODIFY_TOOL_DESCRIPTION,
                     "This utility may be used to apply a set of modify, add, " +
-                    "and delete operations against data in an LDIF file.");
+                    "and delete operations against data in an LDIF file");
     registerMessage(MSGID_LDIFSEARCH_TOOL_DESCRIPTION,
                     "This utility may be used to perform search operations " +
-                    "against data in an LDIF file.");
+                    "against data in an LDIF file");
     registerMessage(MSGID_MAKELDIF_TOOL_DESCRIPTION,
                     "This utility may be used to generate LDIF data based on " +
-                    "a definition in a template file.");
+                    "a definition in a template file");
     registerMessage(MSGID_RESTOREDB_TOOL_DESCRIPTION,
                     "This utility may be used to restore a backup of a " +
-                    "Directory Server backend.");
+                    "Directory Server backend");
     registerMessage(MSGID_STOPDS_TOOL_DESCRIPTION,
                     "This utility may be used to request that the Directory " +
-                    "Server stop running or perform a restart.");
+                    "Server stop running or perform a restart");
     registerMessage(MSGID_VERIFYINDEX_TOOL_DESCRIPTION,
                     "This utility may be used to ensure that index data is " +
                     "consistent within a backend based on the Berkeley DB " +
-                    "Java Edition.");
+                    "Java Edition");
     registerMessage(MSGID_WAIT4DEL_TOOL_DESCRIPTION,
                     "This utility may be used to wait for a file to be " +
-                    "removed from the filesystem.");
+                    "removed from the filesystem");
     registerMessage(MSGID_LISTBACKENDS_TOOL_DESCRIPTION,
                     "This utility may be used to list the backends and base " +
-                    "DNs configured in the Directory Server.");
+                    "DNs configured in the Directory Server");
 
 
     registerMessage(MSGID_LISTBACKENDS_DESCRIPTION_BACKEND_ID,
@@ -8939,50 +8939,50 @@
     registerMessage(MSGID_LISTBACKENDS_DESCRIPTION_BASE_DN,
                     "Base DN for which to list the backend ID");
     registerMessage(MSGID_LISTBACKENDS_DESCRIPTION_HELP,
-                    "Display this usage information.");
+                    "Display this usage information");
     registerMessage(MSGID_LISTBACKENDS_CANNOT_GET_BACKENDS,
                     "An error occurred while trying to read backend " +
-                    "information from the server configuration:  %s.");
+                    "information from the server configuration:  %s");
     registerMessage(MSGID_LISTBACKENDS_INVALID_DN,
                     "The provided base DN value '%s' could not be parsed as " +
-                    "a valid DN:  %s.");
+                    "a valid DN:  %s");
     registerMessage(MSGID_LISTBACKENDS_NOT_BASE_DN,
                     "The provided DN '%s' is not a base DN for any backend " +
-                    "configured in the Directory Server.");
+                    "configured in the Directory Server");
     registerMessage(MSGID_LISTBACKENDS_NO_BACKEND_FOR_DN,
                     "The provided DN '%s' is not below any base DN for any " +
-                    "of the backends configured in the Directory Server.");
+                    "of the backends configured in the Directory Server");
     registerMessage(MSGID_LISTBACKENDS_DN_BELOW_BASE,
                     "The provided DN '%s' is below '%s' which is configured " +
-                    "as a base DN for backend '%s'.");
+                    "as a base DN for backend '%s'");
     registerMessage(MSGID_LISTBACKENDS_BASE_FOR_ID,
-                    "The provided DN '%s' is a base DN for backend '%s'.");
+                    "The provided DN '%s' is a base DN for backend '%s'");
     registerMessage(MSGID_LISTBACKENDS_LABEL_BACKEND_ID,
                     "Backend ID");
     registerMessage(MSGID_LISTBACKENDS_LABEL_BASE_DN,
                     "Base DN");
     registerMessage(MSGID_LISTBACKENDS_NO_SUCH_BACKEND,
                     "There is no backend with ID '%s' in the server " +
-                    "configuration.");
+                    "configuration");
     registerMessage(MSGID_LISTBACKENDS_NO_VALID_BACKENDS,
                     "None of the provided backend IDs exist in the server " +
-                    "configuration.");
+                    "configuration");
 
 
     registerMessage(MSGID_PROMPTTM_REJECTING_CLIENT_CERT,
                     "Rejecting client certificate chain because the prompt " +
                     "trust manager may only be used to trust server " +
-                    "certificates.");
+                    "certificates");
     registerMessage(MSGID_PROMPTTM_NO_SERVER_CERT_CHAIN,
                     "WARNING:  The server did not present a certificate " +
                     "chain.  Do you still wish to attempt connecting to the " +
                     "target server?");
     registerMessage(MSGID_PROMPTTM_CERT_EXPIRED,
                     "WARNING:  The server certificate is expired (expiration " +
-                    "time:  %s).");
+                    "time:  %s)");
     registerMessage(MSGID_PROMPTTM_CERT_NOT_YET_VALID,
                     "WARNING:  The server certificate will not be valid " +
-                    "until %s.");
+                    "until %s");
     registerMessage(MSGID_PROMPTTM_SERVER_CERT,
                     "The server is using the following certificate:  " + EOL +
                     "    Subject DN:  %s" + EOL +
@@ -8993,10 +8993,10 @@
     registerMessage(MSGID_PROMPTTM_YESNO_PROMPT,
                     "Please enter \"yes\" or \"no\":  ");
     registerMessage(MSGID_PROMPTTM_USER_REJECTED,
-                    "The server certificate has been rejected by the user.");
+                    "The server certificate has been rejected by the user");
 
     registerMessage(MSGID_WINDOWS_SERVICE_NOT_FOUND,
-                    "Could not find the service name for OpenDS.");
+                    "Could not find the service name for OpenDS");
 
     registerMessage(MSGID_WINDOWS_SERVICE_START_ERROR,
                     "An unexpected error occurred starting OpenDS as a "+
@@ -9008,13 +9008,13 @@
 
     registerMessage(MSGID_CONFIGURE_WINDOWS_SERVICE_TOOL_DESCRIPTION,
                     "This utility may be used to configure OpenDS as a "+
-                    "Windows service.");
+                    "Windows service");
 
     registerMessage(MSGID_CONFIGURE_WINDOWS_SERVICE_DESCRIPTION_SHOWUSAGE,
-                    "Display this usage information.");
+                    "Display this usage information");
 
     registerMessage(MSGID_CONFIGURE_WINDOWS_SERVICE_DESCRIPTION_ENABLE,
-                    "Enables OpenDS as a Windows service.");
+                    "Enables OpenDS as a Windows service");
 
     registerMessage(MSGID_CONFIGURE_WINDOWS_SERVICE_DESCRIPTION_DISABLE,
                     "Disables OpenDS as a Windows service and stops the "+
@@ -9022,22 +9022,22 @@
 
     registerMessage(MSGID_CONFIGURE_WINDOWS_SERVICE_DESCRIPTION_STATE,
                     "Provides information about the state of OpenDS as a "+
-                    "Windows service.");
+                    "Windows service");
 
     registerMessage(MSGID_CONFIGURE_WINDOWS_SERVICE_DESCRIPTION_CLEANUP,
                     "Allows to disable the OpenDS service and to clean up the "+
                     "windows registry information associated with the "+
-                    "provided service name.");
+                    "provided service name");
 
     registerMessage(MSGID_CONFIGURE_WINDOWS_SERVICE_TOO_MANY_ARGS,
                     "You can only provide one of the following arguments:"+
                     EOL+"enableService, disableService, serviceState or "+
-                    "cleanupService.");
+                    "cleanupService");
 
     registerMessage(MSGID_CONFIGURE_WINDOWS_SERVICE_TOO_FEW_ARGS,
                     "You must provide at least one of the following arguments:"+
                     EOL+"enableService, disableService or serviceState or "+
-                    "cleanupService.");
+                    "cleanupService");
 
     registerMessage(MSGID_WINDOWS_SERVICE_NAME,
                     "OpenDS");
@@ -9047,75 +9047,75 @@
                     "Installation path: %s");
 
     registerMessage(MSGID_WINDOWS_SERVICE_SUCCESSULLY_ENABLED,
-                    "OpenDS was successfully enabled as a Windows service.");
+                    "OpenDS was successfully enabled as a Windows service");
 
     registerMessage(MSGID_WINDOWS_SERVICE_ALREADY_ENABLED,
-                    "OpenDS was already enabled as a Windows service.");
+                    "OpenDS was already enabled as a Windows service");
 
     registerMessage(MSGID_WINDOWS_SERVICE_NAME_ALREADY_IN_USE,
                     "OpenDS could not enabled as a Windows service.  The "+
-                    "service name is already in use.");
+                    "service name is already in use");
 
     registerMessage(MSGID_WINDOWS_SERVICE_ENABLE_ERROR,
                     "An unexpected error occurred trying to enable OpenDS as "+
-                    "a Windows service.");
+                    "a Windows service");
 
     registerMessage(MSGID_WINDOWS_SERVICE_SUCCESSULLY_DISABLED,
-                    "OpenDS was successfully disabled as a Windows service.");
+                    "OpenDS was successfully disabled as a Windows service");
 
     registerMessage(MSGID_WINDOWS_SERVICE_ALREADY_DISABLED,
-                    "OpenDS was already disabled as a Windows service.");
+                    "OpenDS was already disabled as a Windows service");
 
     registerMessage(MSGID_WINDOWS_SERVICE_MARKED_FOR_DELETION,
                     "OpenDS has been marked for deletion as a Windows "+
-                    "Service.");
+                    "Service");
 
     registerMessage(MSGID_WINDOWS_SERVICE_DISABLE_ERROR,
                     "An unexpected error occurred trying to disable OpenDS as "+
-                    "a Windows service.");
+                    "a Windows service");
 
     registerMessage(MSGID_WINDOWS_SERVICE_ENABLED,
                     "OpenDS is enabled as a Windows service.  The service "+
                     "name for OpenDS is: %s");
 
     registerMessage(MSGID_WINDOWS_SERVICE_DISABLED,
-                    "OpenDS is disabled as a Windows service.");
+                    "OpenDS is disabled as a Windows service");
 
     registerMessage(MSGID_WINDOWS_SERVICE_STATE_ERROR,
                     "An unexpected error occurred trying to retrieve the "+
-                    "state of OpenDS as a Windows service.");
+                    "state of OpenDS as a Windows service");
 
     registerMessage(MSGID_WINDOWS_SERVICE_CLEANUP_SUCCESS,
-                    "Clean up of service %s was successful.");
+                    "Clean up of service %s was successful");
 
     registerMessage(MSGID_WINDOWS_SERVICE_CLEANUP_NOT_FOUND,
-                    "Could not find the service with name %s.");
+                    "Could not find the service with name %s");
 
     registerMessage(MSGID_WINDOWS_SERVICE_CLEANUP_ERROR,
-                    "An unexpected error occurred cleaning up the service %s.");
+                    "An unexpected error occurred cleaning up the service %s");
 
     registerMessage(MSGID_WINDOWS_SERVICE_CLEANUP_MARKED_FOR_DELETION,
-                    "Service %s has been marked for deletion.");
+                    "Service %s has been marked for deletion");
 
     registerMessage(MSGID_REBUILDINDEX_CANNOT_SHARED_LOCK_BACKEND,
                     "An error occurred while attempting to acquire a shared " +
                     "lock for backend %s:  %s.  This generally means that " +
                     "some other process has an exclusive lock on this " +
                     "backend (e.g., an LDIF import or a restore). The rebuild" +
-                    "process cannot continue.");
+                    "process cannot continue");
 
     registerMessage(MSGID_REBUILDINDEX_CANNOT_EXCLUSIVE_LOCK_BACKEND,
                     "An error occurred while attempting to acquire a " +
                     "exclusive lock for backend %s:  %s.  This generally " +
                     "means that some other process has an lock " +
                     "on this backend or the server is running with this " +
-                    "backend online. The rebuild process cannot continue.");
+                    "backend online. The rebuild process cannot continue");
 
     registerMessage(MSGID_REBUILDINDEX_CANNOT_UNLOCK_BACKEND,
                     "An error occurred while attempting to release the " +
                     "shared lock for backend %s:  %s.  This lock should " +
                     "automatically be cleared when the rebuild process " +
-                    "exits, so no further action should be required.");
+                    "exits, so no further action should be required");
   }
 }
 
diff --git a/opends/src/server/org/opends/server/messages/UtilityMessages.java b/opends/src/server/org/opends/server/messages/UtilityMessages.java
index 54bd436..a87232d 100644
--- a/opends/src/server/org/opends/server/messages/UtilityMessages.java
+++ b/opends/src/server/org/opends/server/messages/UtilityMessages.java
@@ -1600,132 +1600,132 @@
   {
     registerMessage(MSGID_BASE64_DECODE_INVALID_LENGTH,
                     "The value %s cannot be base64-decoded because it does " +
-                    "not have a length that is a multiple of four bytes.");
+                    "not have a length that is a multiple of four bytes");
     registerMessage(MSGID_BASE64_DECODE_INVALID_CHARACTER,
                     "The value %s cannot be base64-decoded because it " +
                     "contains an illegal character %s that is not allowed in "+
-                    "base64-encoded values.");
+                    "base64-encoded values");
 
 
     registerMessage(MSGID_HEX_DECODE_INVALID_LENGTH,
                     "The value %s cannot be decoded as a hexadecimal string " +
                     "because it does not have a length that is a multiple of " +
-                    "two bytes.");
+                    "two bytes");
     registerMessage(MSGID_HEX_DECODE_INVALID_CHARACTER,
                     "The value %s cannot be decoded as a hexadecimal string " +
                     "because it contains an illegal character %s that is not " +
-                    "a valid hexadecimal digit.");
+                    "a valid hexadecimal digit");
 
 
     registerMessage(MSGID_EXEC_DISABLED,
                     "The %s command will not be allowed because the " +
                     "Directory Server has been configured to refuse the use " +
-                    "of the exec method.");
+                    "of the exec method");
 
 
     registerMessage(MSGID_LDIF_INVALID_LEADING_SPACE,
                     "Unable to parse line %d (\"%s\") from the LDIF source " +
                     "because the line started with a space but there were no " +
                     "previous lines in the entry to which this line could be " +
-                    "appended.");
+                    "appended");
     registerMessage(MSGID_LDIF_NO_ATTR_NAME,
                     "Unable to parse LDIF entry starting at line %d because " +
-                    "the line \"%s\" does not include an attribute name.");
+                    "the line \"%s\" does not include an attribute name");
     registerMessage(MSGID_LDIF_NO_DN,
                     "Unable to parse LDIF entry starting at line %d because " +
                     "the first line does not contain a DN (the first line " +
-                    "was \"%s\".");
+                    "was \"%s\"");
     registerMessage(MSGID_LDIF_INVALID_DN_SEPARATOR,
                     "Unable to parse LDIF entry starting at line %d because " +
                     "line \"%s\" contained an invalid separator between the " +
-                    "\"dn\" prefix and the actual distinguished name.");
+                    "\"dn\" prefix and the actual distinguished name");
     registerMessage(MSGID_LDIF_INVALID_DN,
                     "Unable to parse LDIF entry starting at line %d because " +
                     "an error occurred while trying to parse the value of " +
-                    "line \"%s\" as a distinguished name:  %s.");
+                    "line \"%s\" as a distinguished name:  %s");
     registerMessage(MSGID_LDIF_INVALID_ATTR_SEPARATOR,
                     "Unable to parse LDIF entry %s starting at line %d " +
                     "because line \"%s\" contained an invalid separator " +
-                    "between the attribute name and value.");
+                    "between the attribute name and value");
     registerMessage(MSGID_LDIF_COULD_NOT_BASE64_DECODE_DN,
                     "Unable to parse LDIF entry starting at line %d " +
                     "because it was not possible to base64-decode the DN " +
-                    "on line \"%s\":  %s.");
+                    "on line \"%s\":  %s");
     registerMessage(MSGID_LDIF_COULD_NOT_BASE64_DECODE_ATTR,
                     "Unable to parse LDIF entry %s starting at line %d " +
                     "because it was not possible to base64-decode the " +
-                    "attribute on line \"%s\":  %s.");
+                    "attribute on line \"%s\":  %s");
     registerMessage(MSGID_LDIF_DUPLICATE_OBJECTCLASS,
                     "Entry %s read from LDIF starting at line %d includes a " +
                     "duplicate objectclass value %s.  The second occurrence " +
-                    "of that objectclass has been skipped.");
+                    "of that objectclass has been skipped");
     registerMessage(MSGID_LDIF_DUPLICATE_ATTR,
                     "Entry %s read from LDIF starting at line %d includes a " +
                     "duplicate attribute %s with value %s.  The second " +
-                    "occurrence of that attribute value has been skipped.");
+                    "occurrence of that attribute value has been skipped");
     registerMessage(MSGID_LDIF_MULTIPLE_VALUES_FOR_SINGLE_VALUED_ATTR,
                     "Entry %s starting at line %d includes multiple values " +
-                    "for single-valued attribute %s.");
+                    "for single-valued attribute %s");
     registerMessage(MSGID_LDIF_INVALID_ATTR_SYNTAX,
                     "Unable to parse LDIF entry %s starting at line %d " +
                     "because it has an invalid value \"%s\" for attribute " +
-                    "%s:  %s.");
+                    "%s:  %s");
     registerMessage(MSGID_LDIF_SCHEMA_VIOLATION,
                     "Entry %s read from LDIF starting at line %d is not " +
                     "valid because it violates the server's schema " +
-                    "configuration:  %s.");
+                    "configuration:  %s");
     registerMessage(MSGID_LDIF_FILE_EXISTS,
                     "The specified LDIF file %s already exists and the " +
                     "export configuration indicates that no attempt should " +
-                    "be made to append to or replace the file.");
+                    "be made to append to or replace the file");
     registerMessage(MSGID_LDIF_INVALID_URL,
                     "Unable to parse LDIF entry %s starting at line %d " +
                     "because the value of attribute %s was to be read from a " +
-                    "URL but the URL was invalid:  %s.");
+                    "URL but the URL was invalid:  %s");
     registerMessage(MSGID_LDIF_URL_IO_ERROR,
                     "Unable to parse LDIF entry %s starting at line %d " +
                     "because the value of attribute %s was to be read from " +
                     "URL %s but an error occurred while trying to read that " +
-                    "content:  %s.");
+                    "content:  %s");
     registerMessage(MSGID_REJECT_FILE_EXISTS,
                     "The specified reject file %s already exists and the " +
                     "import configuration indicates that no attempt should " +
-                    "be made to append to or replace the file.");
+                    "be made to append to or replace the file");
     registerMessage(MSGID_LDIF_COULD_NOT_EVALUATE_FILTERS_FOR_IMPORT,
                     "An error occurred while attempting to determine whether " +
                     "LDIF entry \"%s\" starting at line %d should be " +
                     "imported as a result of the include and exclude filter " +
-                    "configuration:  %s.");
+                    "configuration:  %s");
     registerMessage(MSGID_LDIF_COULD_NOT_EVALUATE_FILTERS_FOR_EXPORT,
                     "An error occurred while attempting to determine whether " +
                     "LDIF entry \"%s\" should be exported as a result of the " +
-                    "include and exclude filter configuration:  %s.");
+                    "include and exclude filter configuration:  %s");
     registerMessage(MSGID_LDIF_INVALID_DELETE_ATTRIBUTES,
                     "Error in the LDIF change record entry. " +
-                    "Invalid attributes specified for the delete operation.");
+                    "Invalid attributes specified for the delete operation");
     registerMessage(MSGID_LDIF_NO_MOD_DN_ATTRIBUTES,
                     "Error in the LDIF change record entry. " +
-                    "No attributes specified for the mod DN operation.");
+                    "No attributes specified for the mod DN operation");
     registerMessage(MSGID_LDIF_NO_DELETE_OLDRDN_ATTRIBUTE,
                     "Error in the LDIF change record entry. " +
                     "No delete old RDN attribute specified for the mod " +
-                    "DN operation.");
+                    "DN operation");
     registerMessage(MSGID_LDIF_INVALID_DELETE_OLDRDN_ATTRIBUTE,
                     "Error in the LDIF change record entry. " +
                     "Invalid value \"%s\" for the delete old RDN attribute " +
-                    "specified for the mod DN operation.");
+                    "specified for the mod DN operation");
     registerMessage(MSGID_LDIF_INVALID_CHANGERECORD_ATTRIBUTE,
                     "Error in the LDIF change record entry. " +
                     "Invalid attribute \"%s\" specified. " +
-                    "Expecting attribute \"%s\".");
+                    "Expecting attribute \"%s\"");
     registerMessage(MSGID_LDIF_INVALID_MODIFY_ATTRIBUTE,
                     "Error in the LDIF change record entry. " +
                     "Invalid attribute \"%s\" specified. " +
-                    "Expecting one of the following attributes \"%s\".");
+                    "Expecting one of the following attributes \"%s\"");
     registerMessage(MSGID_LDIF_INVALID_CHANGETYPE_ATTRIBUTE,
                     "Error in the LDIF change record entry. " +
                     "Invalid value \"%s\" for the changetype specified. " +
-                    "Expecting one of the following values \"%s\".");
+                    "Expecting one of the following values \"%s\"");
     registerMessage(MSGID_LDIF_INVALID_MODIFY_ATTRIBUTE_VAL,
                     "Error in the LDIF change record entry. " +
                     "Invalid value for the \"%s\" attribute specified. ");
@@ -1734,327 +1734,327 @@
     registerMessage(MSGID_SCHEMANAME_EMPTY_VALUE,
                     "The provided value could not be parsed to determine " +
                     "whether it contained a valid schema element name or OID " +
-                    "because it was null or empty.");
+                    "because it was null or empty");
     registerMessage(MSGID_SCHEMANAME_ILLEGAL_CHAR,
                     "The provided value \"%s\" does not contain a valid " +
                     "schema element name or OID because it contains an " +
-                    "illegal character %s at position %d.");
+                    "illegal character %s at position %d");
     registerMessage(MSGID_SCHEMANAME_CONSECUTIVE_PERIODS,
                     "The provided value \"%s\" does not contain a valid " +
                     "schema element name or OID because the numeric OID " +
-                    "contains two consecutive periods at position %d.");
+                    "contains two consecutive periods at position %d");
 
 
     registerMessage(MSGID_ARG_NO_IDENTIFIER,
                     "The %s argument does not have either a single-character " +
                     "or a long identifier that may be used to specify it.  " +
                     "At least one of these must be specified for each " +
-                    "argument.");
+                    "argument");
     registerMessage(MSGID_ARG_NO_VALUE_PLACEHOLDER,
                     "The %s argument is configured to take a value but no " +
-                    "value placeholder has been defined for it.");
+                    "value placeholder has been defined for it");
     registerMessage(MSGID_ARG_NO_INT_VALUE,
                     "The %s argument does not have any value that may be " +
-                    "retrieved as an integer.");
+                    "retrieved as an integer");
     registerMessage(MSGID_ARG_CANNOT_DECODE_AS_INT,
                     "The provided value \"%s\" for the %s argument cannot be " +
-                    "decoded as an integer.");
+                    "decoded as an integer");
     registerMessage(MSGID_ARG_INT_MULTIPLE_VALUES,
                     "The %s argument has multiple values and therefore " +
-                    "cannot be decoded as a single integer value.");
+                    "cannot be decoded as a single integer value");
     registerMessage(MSGID_ARG_NO_BOOLEAN_VALUE,
                     "The %s argument does not have any value that may be " +
-                    "retrieved as a Boolean.");
+                    "retrieved as a Boolean");
     registerMessage(MSGID_ARG_CANNOT_DECODE_AS_BOOLEAN,
                     "The provided value \"%s\" for the %s argument cannot be " +
-                    "decoded as a Boolean.");
+                    "decoded as a Boolean");
     registerMessage(MSGID_ARG_BOOLEAN_MULTIPLE_VALUES,
                     "The %s argument has multiple values and therefore " +
-                    "cannot be decoded as a single Boolean value.");
+                    "cannot be decoded as a single Boolean value");
 
 
     registerMessage(MSGID_INTARG_LOWER_BOUND_ABOVE_UPPER_BOUND,
                     "The %s argument configuration is invalid because the " +
-                    "lower bound of %d is greater than the upper bound of %d.");
+                    "lower bound of %d is greater than the upper bound of %d");
     registerMessage(MSGID_INTARG_VALUE_BELOW_LOWER_BOUND,
                     "The provided %s value %d is unacceptable because it is " +
-                    "below the lower bound of %d.");
+                    "below the lower bound of %d");
     registerMessage(MSGID_INTARG_VALUE_ABOVE_UPPER_BOUND,
                     "The provided %s value %d is unacceptable because it is " +
-                    "above the upper bound of %d.");
+                    "above the upper bound of %d");
 
 
     registerMessage(MSGID_BOOLEANARG_NO_VALUE_ALLOWED,
                     "The provided %s value is unacceptable because Boolean " +
-                    "arguments are never allowed to have values.");
+                    "arguments are never allowed to have values");
 
 
     registerMessage(MSGID_MCARG_VALUE_NOT_ALLOWED,
                     "The provided %s value %s is unacceptable because it is " +
                     "not included in the set of allowed values for that " +
-                    "argument.");
+                    "argument");
 
 
     registerMessage(MSGID_FILEARG_NO_SUCH_FILE,
-                    "The file %s specified for argument %s does not exist.");
+                    "The file %s specified for argument %s does not exist");
     registerMessage(MSGID_FILEARG_CANNOT_VERIFY_FILE_EXISTENCE,
                     "An error occurred while trying to verify the existence " +
-                    "of file %s specified for argument %s:  %s.");
+                    "of file %s specified for argument %s:  %s");
     registerMessage(MSGID_FILEARG_CANNOT_OPEN_FILE,
                     "An error occurred while trying to open file %s " +
-                    "specified for argument %s for reading:  %s.");
+                    "specified for argument %s for reading:  %s");
     registerMessage(MSGID_FILEARG_CANNOT_READ_FILE,
                     "An error occurred while trying to read from file %s " +
-                    "specified for argument %s:  %s.");
+                    "specified for argument %s:  %s");
     registerMessage(MSGID_FILEARG_EMPTY_FILE,
                     "The file %s specified for argument %s exists but is " +
-                    "empty.");
+                    "empty");
 
 
     registerMessage(MSGID_ARGPARSER_DUPLICATE_SHORT_ID,
                     "Cannot add argument %s to the argument list because " +
                     "its short identifier -%s conflicts with the %s argument " +
-                    "that has already been defined.");
+                    "that has already been defined");
     registerMessage(MSGID_ARGPARSER_DUPLICATE_LONG_ID,
                     "Cannot add argument %s to the argument list because " +
                     "its long identifier --%s conflicts with the %s argument " +
-                    "that has already been defined.");
+                    "that has already been defined");
     registerMessage(MSGID_ARGPARSER_CANNOT_READ_PROPERTIES_FILE,
                     "An error occurred while attempting to read the contents " +
-                    "of the argument properties file %s:  %s.");
+                    "of the argument properties file %s:  %s");
     registerMessage(MSGID_ARGPARSER_TOO_MANY_TRAILING_ARGS,
                     "The provided set of command-line arguments contained " +
                     "too many unnamed trailing arguments.  The maximum " +
-                    "number of allowed trailing arguments is %d.");
+                    "number of allowed trailing arguments is %d");
     registerMessage(MSGID_ARGPARSER_LONG_ARG_WITHOUT_NAME,
                     "The provided argument \"%s\" is invalid because it does " +
-                    "not include the argument name.");
+                    "not include the argument name");
     registerMessage(MSGID_ARGPARSER_NO_ARGUMENT_WITH_LONG_ID,
-                    "Argument --%s is not allowed for use with this program.");
+                    "Argument --%s is not allowed for use with this program");
     registerMessage(MSGID_ARGPARSER_NO_VALUE_FOR_ARGUMENT_WITH_LONG_ID,
-                    "Argument --%s requires a value but none was provided.");
+                    "Argument --%s requires a value but none was provided");
     registerMessage(MSGID_ARGPARSER_VALUE_UNACCEPTABLE_FOR_LONG_ID,
                     "The provided value \"%s\" for argument --%s is not " +
-                    "acceptable:  %s.");
+                    "acceptable:  %s");
     registerMessage(MSGID_ARGPARSER_NOT_MULTIVALUED_FOR_LONG_ID,
                     "The argument --%s was included multiple times in the " +
                     "provided set of arguments but it does not allow " +
-                    "multiple values.");
+                    "multiple values");
     registerMessage(MSGID_ARGPARSER_ARG_FOR_LONG_ID_DOESNT_TAKE_VALUE,
                     "A value was provided for argument --%s but that " +
-                    "argument does not take a value.");
+                    "argument does not take a value");
     registerMessage(MSGID_ARGPARSER_INVALID_DASH_AS_ARGUMENT,
                     "The dash character by itself is invalid for use as an " +
-                    "argument name.");
+                    "argument name");
     registerMessage(MSGID_ARGPARSER_NO_ARGUMENT_WITH_SHORT_ID,
-                    "Argument -%s is not allowed for use with this program.");
+                    "Argument -%s is not allowed for use with this program");
     registerMessage(MSGID_ARGPARSER_NO_VALUE_FOR_ARGUMENT_WITH_SHORT_ID,
-                    "Argument -%s requires a value but none was provided.");
+                    "Argument -%s requires a value but none was provided");
     registerMessage(MSGID_ARGPARSER_VALUE_UNACCEPTABLE_FOR_SHORT_ID,
                     "The provided value \"%s\" for argument -%s is not " +
-                    "acceptable:  %s.");
+                    "acceptable:  %s");
     registerMessage(MSGID_ARGPARSER_NOT_MULTIVALUED_FOR_SHORT_ID,
                     "The argument -%s was included multiple times in the " +
                     "provided set of arguments but it does not allow " +
-                    "multiple values.");
+                    "multiple values");
     registerMessage(MSGID_ARGPARSER_CANT_MIX_ARGS_WITH_VALUES,
                     "The provided argument block '-%s%s' is illegal because " +
                     "the '%s' argument requires a value but is in the same " +
                     "block as at least one other argument that doesn't " +
-                    "require a value.");
+                    "require a value");
     registerMessage(MSGID_ARGPARSER_DISALLOWED_TRAILING_ARGUMENT,
                     "Argument \"%s\" does not start with one or two dashes " +
-                    "and unnamed trailing arguments are not allowed.");
+                    "and unnamed trailing arguments are not allowed");
     registerMessage(MSGID_ARGPARSER_TOO_FEW_TRAILING_ARGUMENTS,
                     "At least %d unnamed trailing arguments are required " +
-                    "in the argument list, but too few were provided.");
+                    "in the argument list, but too few were provided");
     registerMessage(MSGID_ARGPARSER_NO_VALUE_FOR_REQUIRED_ARG,
                     "The argument %s is required to have a value but none " +
                     "was provided in the argument list and no default " +
-                    "value is available.");
+                    "value is available");
 
 
     registerMessage(MSGID_MOVEFILE_NO_SUCH_FILE,
-                    "The file to move %s does not exist.");
+                    "The file to move %s does not exist");
     registerMessage(MSGID_MOVEFILE_NOT_FILE,
-                    "The file to move %s exists but is not a file.");
+                    "The file to move %s exists but is not a file");
     registerMessage(MSGID_MOVEFILE_NO_SUCH_DIRECTORY,
-                    "The target directory %s does not exist.");
+                    "The target directory %s does not exist");
     registerMessage(MSGID_MOVEFILE_NOT_DIRECTORY,
-                    "The target directory %s exists but is not a directory.");
+                    "The target directory %s exists but is not a directory");
 
 
     registerMessage(MSGID_EMAILMSG_INVALID_SENDER_ADDRESS,
-                    "The provided sender address %s is invalid:  %s.");
+                    "The provided sender address %s is invalid:  %s");
     registerMessage(MSGID_EMAILMSG_INVALID_RECIPIENT_ADDRESS,
-                    "The provided recipient address %s is invalid:  %s.");
+                    "The provided recipient address %s is invalid:  %s");
     registerMessage(MSGID_EMAILMSG_CANNOT_SEND,
                     "The specified e-mail message could not be sent using " +
-                    "any of the configured mail servers.");
+                    "any of the configured mail servers");
 
 
     registerMessage(MSGID_ARG_SUBCOMMAND_DUPLICATE_SUBCOMMAND,
-                    "The argument parser already has a %s subcommand.");
+                    "The argument parser already has a %s subcommand");
     registerMessage(MSGID_ARG_SUBCOMMAND_DUPLICATE_ARGUMENT_NAME,
                     "There are multiple arguments for subcommand %s with " +
-                    "name %s.");
+                    "name %s");
     registerMessage(MSGID_ARG_SUBCOMMAND_ARGUMENT_GLOBAL_CONFLICT,
                     "Argument %s for subcommand %s conflicts with a global " +
-                    "argument with the same name.");
+                    "argument with the same name");
     registerMessage(MSGID_ARG_SUBCOMMAND_DUPLICATE_SHORT_ID,
                     "Argument %s for subcommand %s has a short identifier " +
-                    "-%s that conflicts with that of argument %s.");
+                    "-%s that conflicts with that of argument %s");
     registerMessage(MSGID_ARG_SUBCOMMAND_ARGUMENT_SHORT_ID_GLOBAL_CONFLICT,
                     "Argument %s for subcommand %s has a short ID -%s that " +
-                    "conflicts with that of global argument %s.");
+                    "conflicts with that of global argument %s");
     registerMessage(MSGID_ARG_SUBCOMMAND_DUPLICATE_LONG_ID,
                     "Argument %s for subcommand %s has a long identifier " +
-                    "--%s that conflicts with that of argument %s.");
+                    "--%s that conflicts with that of argument %s");
     registerMessage(MSGID_ARG_SUBCOMMAND_ARGUMENT_LONG_ID_GLOBAL_CONFLICT,
                     "Argument %s for subcommand %s has a long ID --%s that " +
-                    "conflicts with that of global argument %s.");
+                    "conflicts with that of global argument %s");
 
 
     registerMessage(MSGID_SUBCMDPARSER_DUPLICATE_GLOBAL_ARG_NAME,
-                    "There is already another global argument named \"%s\".");
+                    "There is already another global argument named \"%s\"");
     registerMessage(MSGID_SUBCMDPARSER_GLOBAL_ARG_NAME_SUBCMD_CONFLICT,
                     "The argument name %s conflicts with the name of another " +
-                    "argument associated with the %s subcommand.");
+                    "argument associated with the %s subcommand");
     registerMessage(MSGID_SUBCMDPARSER_DUPLICATE_GLOBAL_ARG_SHORT_ID,
                     "Short ID -%s for global argument %s conflicts with the " +
-                    "short ID of another global argument %s.");
+                    "short ID of another global argument %s");
     registerMessage(MSGID_SUBCMDPARSER_GLOBAL_ARG_SHORT_ID_CONFLICT,
                     "Short ID -%s for global argument %s conflicts with the " +
                     "short ID for the %s argument associated with subcommand " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_SUBCMDPARSER_DUPLICATE_GLOBAL_ARG_LONG_ID,
                     "Long ID --%s for global argument %s conflicts with the " +
-                    "long ID of another global argument %s.");
+                    "long ID of another global argument %s");
     registerMessage(MSGID_SUBCMDPARSER_GLOBAL_ARG_LONG_ID_CONFLICT,
                     "Long ID --%s for global argument %s conflicts with the " +
                     "long ID for the %s argument associated with subcommand " +
-                    "%s.");
+                    "%s");
     registerMessage(MSGID_SUBCMDPARSER_CANNOT_READ_PROPERTIES_FILE,
                     "An error occurred while attempting to read the contents " +
-                    "of the argument properties file %s:  %s.");
+                    "of the argument properties file %s:  %s");
     registerMessage(MSGID_SUBCMDPARSER_LONG_ARG_WITHOUT_NAME,
                     "The provided command-line argument %s does not contain " +
-                    "an argument name.");
+                    "an argument name");
     registerMessage(MSGID_SUBCMDPARSER_NO_GLOBAL_ARGUMENT_FOR_LONG_ID,
                     "The provided argument --%s is not a valid global " +
-                    "argument identifier.");
+                    "argument identifier");
     registerMessage(MSGID_SUBCMDPARSER_NO_ARGUMENT_FOR_LONG_ID,
                     "The provided argument --%s is not a valid global or " +
-                    "subcommand argument identifier.");
+                    "subcommand argument identifier");
     registerMessage(MSGID_SUBCMDPARSER_NO_VALUE_FOR_ARGUMENT_WITH_LONG_ID,
                     "Command-line argument --%s requires a value but none " +
-                    "was given.");
+                    "was given");
     registerMessage(MSGID_SUBCMDPARSER_VALUE_UNACCEPTABLE_FOR_LONG_ID,
                     "The provided value \"%s\" for argument --%s is not " +
-                    "acceptable:  %s.");
+                    "acceptable:  %s");
     registerMessage(MSGID_SUBCMDPARSER_NOT_MULTIVALUED_FOR_LONG_ID,
                     "The argument --%s was included multiple times in the " +
                     "provided set of arguments but it does not allow " +
-                    "multiple values.");
+                    "multiple values");
     registerMessage(MSGID_SUBCMDPARSER_ARG_FOR_LONG_ID_DOESNT_TAKE_VALUE,
                     "A value was provided for argument --%s but that " +
-                    "argument does not take a value.");
+                    "argument does not take a value");
     registerMessage(MSGID_SUBCMDPARSER_INVALID_DASH_AS_ARGUMENT,
                     "The dash character by itself is invalid for use as an " +
-                    "argument name.");
+                    "argument name");
     registerMessage(MSGID_SUBCMDPARSER_NO_GLOBAL_ARGUMENT_FOR_SHORT_ID,
                     "The provided argument -%s is not a valid global " +
-                    "argument identifier.");
+                    "argument identifier");
     registerMessage(MSGID_SUBCMDPARSER_NO_ARGUMENT_FOR_SHORT_ID,
                     "The provided argument -%s is not a valid global or " +
-                    "subcommand argument identifier.");
+                    "subcommand argument identifier");
     registerMessage(MSGID_SUBCMDPARSER_NO_VALUE_FOR_ARGUMENT_WITH_SHORT_ID,
-                    "Argument -%s requires a value but none was provided.");
+                    "Argument -%s requires a value but none was provided");
     registerMessage(MSGID_SUBCMDPARSER_VALUE_UNACCEPTABLE_FOR_SHORT_ID,
                     "The provided value \"%s\" for argument -%s is not " +
-                    "acceptable:  %s.");
+                    "acceptable:  %s");
     registerMessage(MSGID_SUBCMDPARSER_NOT_MULTIVALUED_FOR_SHORT_ID,
                     "The argument -%s was included multiple times in the " +
                     "provided set of arguments but it does not allow " +
-                    "multiple values.");
+                    "multiple values");
     registerMessage(MSGID_SUBCMDPARSER_CANT_MIX_ARGS_WITH_VALUES,
                     "The provided argument block '-%s%s' is illegal because " +
                     "the '%s' argument requires a value but is in the same " +
                     "block as at least one other argument that doesn't " +
-                    "require a value.");
+                    "require a value");
     registerMessage(MSGID_SUBCMDPARSER_INVALID_ARGUMENT,
-                    "The provided argument %s is not recognized.");
+                    "The provided argument %s is not recognized");
     registerMessage(MSGID_SUBCMDPARSER_MULTIPLE_SUBCOMMANDS,
                     "The provided argument %s specifies a valid subcommand, " +
                     "but another subcommand %s was also given.  Only a " +
-                    "single subcommand may be provided.");
+                    "single subcommand may be provided");
     registerMessage(MSGID_SUBCMDPARSER_NO_VALUE_FOR_REQUIRED_ARG,
                     "The argument %s is required to have a value but none " +
                     "was provided in the argument list and no default " +
-                    "value is available.");
+                    "value is available");
 
 
     registerMessage(MSGID_LDAPURL_NO_COLON_SLASH_SLASH,
                     "The provided string \"%s\" cannot be decoded as an LDAP " +
                     "URL because it does not contain the necessary :// " +
                     "component to separate the scheme from the rest of the " +
-                    "URL.");
+                    "URL");
     registerMessage(MSGID_LDAPURL_NO_SCHEME,
                     "The provided string \"%s\" cannot be decoded as an LDAP " +
-                    "URL because it does not contain a protocol scheme.");
+                    "URL because it does not contain a protocol scheme");
     registerMessage(MSGID_LDAPURL_NO_HOST,
                     "The provided string \"%s\" cannot be decoded as an LDAP " +
                     "URL because it does not contain a host before the colon " +
-                    "to specify the port number.");
+                    "to specify the port number");
     registerMessage(MSGID_LDAPURL_NO_PORT,
                     "The provided string \"%s\" cannot be decoded as an LDAP " +
                     "URL because it does not contain a port number after the " +
-                    "colon following the host.");
+                    "colon following the host");
     registerMessage(MSGID_LDAPURL_CANNOT_DECODE_PORT,
                     "The provided string \"%s\" cannot be decoded as an LDAP " +
                     "URL because the port number portion %s cannot be " +
-                    "decoded as an integer.");
+                    "decoded as an integer");
     registerMessage(MSGID_LDAPURL_INVALID_PORT,
                     "The provided string \"%s\" cannot be decoded as an LDAP " +
                     "URL because the provided port number %d is not within " +
-                    "the valid range between 1 and 65535.");
+                    "the valid range between 1 and 65535");
     registerMessage(MSGID_LDAPURL_INVALID_SCOPE_STRING,
                     "The provided string \"%s\" cannot be decoded as an LDAP " +
                     "URL because the scope string %s was not one of the " +
-                    "allowed values of base, one, sub, or subordinate.");
+                    "allowed values of base, one, sub, or subordinate");
     registerMessage(MSGID_LDAPURL_PERCENT_TOO_CLOSE_TO_END,
                     "The provided URL component \"%s\" could not be decoded " +
                     "because the percent character at byte %d was not " +
-                    "followed by two hexadecimal digits.");
+                    "followed by two hexadecimal digits");
     registerMessage(MSGID_LDAPURL_INVALID_HEX_BYTE,
                     "The provided URL component \"%s\" could not be " +
                     "decoded because the character at byte %d was not a " +
-                    "valid hexadecimal digit.");
+                    "valid hexadecimal digit");
     registerMessage(MSGID_LDAPURL_CANNOT_CREATE_UTF8_STRING,
                     "An error occurred while attempting to represent a byte " +
                     "array as a UTF-8 string during the course of decoding a " +
-                    "portion of an LDAP URL:  %s.");
+                    "portion of an LDAP URL:  %s");
 
 
     registerMessage(MSGID_CHARSET_CONSTRUCTOR_NO_NAME,
                     "The named character set is invalid because it does not " +
-                    "contain a name.");
+                    "contain a name");
     registerMessage(MSGID_CHARSET_CONSTRUCTOR_INVALID_NAME_CHAR,
                     "The named character set is invalid because the provide " +
                     "name \"%s\" has an invalid character at position %d.  " +
                     "Only ASCII alphabetic characters are allowed in the " +
-                    "name.");
+                    "name");
     registerMessage(MSGID_CHARSET_NO_COLON,
                     "Cannot decode value \"%s\" as a named character set " +
                     "because it does not contain a colon to separate the " +
-                    "name from the set of characters.");
+                    "name from the set of characters");
     registerMessage(MSGID_CHARSET_NO_NAME,
                     "Cannot decode value \"%s\" as a named character set " +
                     "because it does not contain a name to use for the " +
-                    "character set.");
+                    "character set");
     registerMessage(MSGID_CHARSET_NO_CHARS,
                     "Cannot decode value \"%s\" as a named character set " +
-                    "because there are no characters to include in the set.");
+                    "because there are no characters to include in the set");
 
 
     registerMessage(MSGID_TIME_IN_SECONDS,
@@ -2095,27 +2095,27 @@
 
     registerMessage(MSGID_FILEPERM_SET_NO_SUCH_FILE,
                     "Unable to set permissions for file %s because it does " +
-                    "not exist.");
+                    "not exist");
     registerMessage(MSGID_FILEPERM_CANNOT_EXEC_CHMOD,
                     "Unable to execute the chmod command to set file " +
-                    "permissions on %s:  %s.");
+                    "permissions on %s:  %s");
     registerMessage(MSGID_FILEPERM_SET_JAVA_EXCEPTION,
                     "One or more exceptions were thrown in the process of " +
                     "updating the file permissions for %s.  Some of the " +
-                    "permissions for the file may have been altered.");
+                    "permissions for the file may have been altered");
     registerMessage(MSGID_FILEPERM_SET_JAVA_FAILED_ALTERED,
                     "One or more updates to the file permissions for %s " +
                     "failed, but at least one update was successful.  Some " +
-                    "of the permissions for the file may have been altered.");
+                    "of the permissions for the file may have been altered");
     registerMessage(MSGID_FILEPERM_SET_JAVA_FAILED_UNALTERED,
                     "All of the attempts to update the file permissions for " +
                     "%s failed.  The file should be left with its original " +
-                    "permissions.");
+                    "permissions");
     registerMessage(MSGID_FILEPERM_INVALID_UNIX_MODE_STRING,
                     "The provided string %s does not represent a valid UNIX " +
                     "file mode.  UNIX file modes must be a three-character " +
                     "string in which each character is a numeric digit " +
-                    "between zero and seven.");
+                    "between zero and seven");
 
     registerMessage(MSGID_VALIDATOR_PRECONDITION_NOT_MET,
                     "A precondition of the invoked method was not met.  This " +
diff --git a/opends/src/server/org/opends/server/protocols/internal/InternalClientConnection.java b/opends/src/server/org/opends/server/protocols/internal/InternalClientConnection.java
index b3cdec4..ea5a7d6 100644
--- a/opends/src/server/org/opends/server/protocols/internal/InternalClientConnection.java
+++ b/opends/src/server/org/opends/server/protocols/internal/InternalClientConnection.java
@@ -51,14 +51,10 @@
 import org.opends.server.core.ExtendedOperation;
 import org.opends.server.core.ModifyOperation;
 import org.opends.server.core.ModifyDNOperation;
-import org.opends.server.core.Operation;
 import org.opends.server.core.SearchOperation;
 import org.opends.server.extensions.
             InternalConnectionSecurityProvider;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPAttribute;
-import org.opends.server.protocols.ldap.LDAPFilter;
-import org.opends.server.protocols.ldap.LDAPModification;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AuthenticationInfo;
@@ -75,7 +71,13 @@
 import org.opends.server.types.Entry;
 import org.opends.server.types.IntermediateResponse;
 import org.opends.server.types.Modification;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.ObjectClass;
+import org.opends.server.types.Operation;
+import org.opends.server.types.RawAttribute;
+import org.opends.server.types.RawFilter;
+import org.opends.server.types.RawModification;
+import org.opends.server.types.ResultCode;
 import org.opends.server.types.RDN;
 import org.opends.server.types.SearchFilter;
 import org.opends.server.types.SearchResultEntry;
@@ -228,7 +230,7 @@
       logError(ErrorLogCategory.CONNECTION_HANDLING,
                ErrorLogSeverity.SEVERE_ERROR,
                MSGID_INTERNAL_CANNOT_DECODE_DN, fullDNString,
-               stackTraceToSingleLineString(de));
+               getExceptionMessage(de));
     }
 
     connectionID  = nextConnectionID.getAndDecrement();
@@ -666,13 +668,32 @@
    * @return  A reference to the add operation that was processed and
    *          contains information about the result of the processing.
    */
+  public AddOperation processAdd(String rawEntryDN,
+                                 List<RawAttribute> rawAttributes)
+  {
+    return processAdd(new ASN1OctetString(rawEntryDN), rawAttributes);
+  }
+
+
+
+  /**
+   * Processes an internal add operation with the provided
+   * information.
+   *
+   * @param  rawEntryDN     The DN to use for the entry to add.
+   * @param  rawAttributes  The set of attributes to include in the
+   *                        entry to add.
+   *
+   * @return  A reference to the add operation that was processed and
+   *          contains information about the result of the processing.
+   */
   public AddOperation processAdd(ByteString rawEntryDN,
-                                 List<LDAPAttribute> rawAttributes)
+                                 List<RawAttribute> rawAttributes)
   {
     AddOperation addOperation =
          new AddOperation(this, nextOperationID(), nextMessageID(),
                           new ArrayList<Control>(0), rawEntryDN,
-                       rawAttributes);
+                          rawAttributes);
     addOperation.setInternalOperation(true);
 
     addOperation.run();
@@ -718,6 +739,45 @@
 
 
   /**
+   * Processes an internal add operation with the provided
+   * information.
+   *
+   * @param  entry  The entry to be added.
+   *
+   * @return  A reference to the add operation that was processed and
+   *          contains information about the result of the processing.
+   */
+  public AddOperation processAdd(Entry entry)
+  {
+    return processAdd(entry.getDN(), entry.getObjectClasses(),
+                      entry.getUserAttributes(),
+                      entry.getOperationalAttributes());
+  }
+
+
+
+  /**
+   * Processes an internal bind operation with the provided
+   * information.  Note that regardless of whether the bind is
+   * successful, the authentication state for this internal connection
+   * will not be altered in any way.
+   *
+   * @param  rawBindDN  The bind DN for the operation.
+   * @param  password   The bind password for the operation.
+   *
+   * @return  A reference to the bind operation that was processed and
+   *          contains information about the result of the processing.
+   */
+  public BindOperation processSimpleBind(String rawBindDN,
+                                         String password)
+  {
+    return processSimpleBind(new ASN1OctetString(rawBindDN),
+                             new ASN1OctetString(password));
+  }
+
+
+
+  /**
    * Processes an internal bind operation with the provided
    * information.  Note that regardless of whether the bind is
    * successful, the authentication state for this internal connection
@@ -845,6 +905,31 @@
    *          and contains information about the result of the
    *          processing.
    */
+  public CompareOperation processCompare(String rawEntryDN,
+                                         String attributeType,
+                                         String assertionValue)
+  {
+    return processCompare(new ASN1OctetString(rawEntryDN),
+                          attributeType,
+                          new ASN1OctetString(assertionValue));
+  }
+
+
+
+  /**
+   * Processes an internal compare operation with the provided
+   * information.
+   *
+   * @param  rawEntryDN      The entry DN for the compare operation.
+   * @param  attributeType   The attribute type for the compare
+   *                         operation.
+   * @param  assertionValue  The assertion value for the compare
+   *                         operation.
+   *
+   * @return  A reference to the compare operation that was processed
+   *          and contains information about the result of the
+   *          processing.
+   */
   public CompareOperation processCompare(ByteString rawEntryDN,
                                          String attributeType,
                                          ByteString assertionValue)
@@ -903,6 +988,23 @@
    *          and contains information about the result of the
    *          processing.
    */
+  public DeleteOperation processDelete(String rawEntryDN)
+  {
+    return processDelete(new ASN1OctetString(rawEntryDN));
+  }
+
+
+
+  /**
+   * Processes an internal delete operation with the provided
+   * information.
+   *
+   * @param  rawEntryDN  The entry DN for the delete operation.
+   *
+   * @return  A reference to the delete operation that was processed
+   *          and contains information about the result of the
+   *          processing.
+   */
   public DeleteOperation processDelete(ByteString rawEntryDN)
   {
     DeleteOperation deleteOperation =
@@ -981,8 +1083,30 @@
    *          and contains information about the result of the
    *          processing.
    */
+  public ModifyOperation processModify(String rawEntryDN,
+                              List<RawModification> rawModifications)
+  {
+    return processModify(new ASN1OctetString(rawEntryDN),
+                         rawModifications);
+  }
+
+
+
+  /**
+   * Processes an internal modify operation with the provided
+   * information.
+   *
+   * @param  rawEntryDN        The raw entry DN for this modify
+   *                           operation.
+   * @param  rawModifications  The set of modifications for this
+   *                           modify operation.
+   *
+   * @return  A reference to the modify operation that was processed
+   *          and contains information about the result of the
+   *          processing.
+   */
   public ModifyOperation processModify(ByteString rawEntryDN,
-                              List<LDAPModification> rawModifications)
+                              List<RawModification> rawModifications)
   {
     ModifyOperation modifyOperation =
          new ModifyOperation(this, nextOperationID(), nextMessageID(),
@@ -1036,6 +1160,30 @@
    *          processed and contains information about the result of
    *          the processing.
    */
+  public ModifyDNOperation processModifyDN(String rawEntryDN,
+                                           String rawNewRDN,
+                                           boolean deleteOldRDN)
+  {
+    return processModifyDN(new ASN1OctetString(rawEntryDN),
+                           new ASN1OctetString(rawNewRDN),
+                           deleteOldRDN, null);
+  }
+
+
+
+  /**
+   * Processes an internal modify DN operation with the provided
+   * information.
+   *
+   * @param  rawEntryDN    The current DN of the entry to rename.
+   * @param  rawNewRDN     The new RDN to use for the entry.
+   * @param  deleteOldRDN  The flag indicating whether the old RDN
+   *                       value is to be removed from the entry.
+   *
+   * @return  A reference to the modify DN operation that was
+   *          processed and contains information about the result of
+   *          the processing.
+   */
   public ModifyDNOperation processModifyDN(ByteString rawEntryDN,
                                            ByteString rawNewRDN,
                                            boolean deleteOldRDN)
@@ -1061,6 +1209,35 @@
    *          processed and contains information about the result of
    *          the processing.
    */
+  public ModifyDNOperation processModifyDN(String rawEntryDN,
+                                           String rawNewRDN,
+                                           boolean deleteOldRDN,
+                                           String rawNewSuperior)
+  {
+    return processModifyDN(new ASN1OctetString(rawEntryDN),
+                           new ASN1OctetString(rawNewRDN),
+                           deleteOldRDN,
+                           new ASN1OctetString(rawNewSuperior));
+  }
+
+
+
+  /**
+   * Processes an internal modify DN operation with the provided
+   * information.
+   *
+   * @param  rawEntryDN      The current DN of the entry to rename.
+   * @param  rawNewRDN       The new RDN to use for the entry.
+   * @param  deleteOldRDN    The flag indicating whether the old RDN
+   *                         value is to be removed from the entry.
+   * @param  rawNewSuperior  The new superior for the modify DN
+   *                         operation, or <CODE>null</CODE> if the
+   *                         entry will remain below the same parent.
+   *
+   * @return  A reference to the modify DN operation that was
+   *          processed and contains information about the result of
+   *          the processing.
+   */
   public ModifyDNOperation processModifyDN(ByteString rawEntryDN,
                                            ByteString rawNewRDN,
                                            boolean deleteOldRDN,
@@ -1140,6 +1317,154 @@
    * request a size or time limit, and will retrieve all user
    * attributes.
    *
+   * @param  rawBaseDN     The base DN for the search.
+   * @param  scope         The scope for the search.
+   * @param  filterString  The string representation of the filter for
+   *                       the search.
+   *
+   * @return  A reference to the internal search operation that was
+   *          processed and contains information about the result of
+   *          the processing as well as lists of the matching entries
+   *          and search references.
+   *
+   * @throws  DirectoryException  If the provided filter string cannot
+   *                              be decoded as a search filter.
+   */
+  public InternalSearchOperation processSearch(String rawBaseDN,
+                                      SearchScope scope,
+                                      String filterString)
+         throws DirectoryException
+  {
+    RawFilter rawFilter;
+    try
+    {
+      rawFilter = RawFilter.create(filterString);
+    }
+    catch (LDAPException le)
+    {
+      throw new DirectoryException(
+                     ResultCode.valueOf(le.getResultCode()),
+                     le.getErrorMessage(), le.getMessageID(), le);
+    }
+
+    return processSearch(new ASN1OctetString(rawBaseDN), scope,
+                         rawFilter);
+  }
+
+
+
+  /**
+   * Processes an internal search operation with the provided
+   * information.
+   *
+   * @param  rawBaseDN     The base DN for the search.
+   * @param  scope         The scope for the search.
+   * @param  derefPolicy   The alias dereferencing policy for the
+   *                       search.
+   * @param  sizeLimit     The size limit for the search.
+   * @param  timeLimit     The time limit for the search.
+   * @param  typesOnly     The typesOnly flag for the search.
+   * @param  filterString  The string representation of the filter for
+   *                       the search.
+   * @param  attributes    The set of requested attributes for the
+   *                       search.
+   *
+   * @return  A reference to the internal search operation that was
+   *          processed and contains information about the result of
+   *          the processing as well as lists of the matching entries
+   *          and search references.
+   *
+   * @throws  DirectoryException  If the provided filter string cannot
+   *                              be decoded as a search filter.
+   */
+  public InternalSearchOperation
+              processSearch(String rawBaseDN, SearchScope scope,
+                            DereferencePolicy derefPolicy,
+                            int sizeLimit, int timeLimit,
+                            boolean typesOnly, String filterString,
+                            LinkedHashSet<String> attributes)
+         throws DirectoryException
+  {
+    RawFilter rawFilter;
+    try
+    {
+      rawFilter = RawFilter.create(filterString);
+    }
+    catch (LDAPException le)
+    {
+      throw new DirectoryException(
+                     ResultCode.valueOf(le.getResultCode()),
+                     le.getErrorMessage(), le.getMessageID(), le);
+    }
+
+    return processSearch(new ASN1OctetString(rawBaseDN), scope,
+                         derefPolicy, sizeLimit, timeLimit, typesOnly,
+                         rawFilter, attributes);
+  }
+
+
+
+  /**
+   * Processes an internal search operation with the provided
+   * information.
+   *
+   * @param  rawBaseDN       The base DN for the search.
+   * @param  scope           The scope for the search.
+   * @param  derefPolicy     The alias dereferencing policy for the
+   *                         search.
+   * @param  sizeLimit       The size limit for the search.
+   * @param  timeLimit       The time limit for the search.
+   * @param  typesOnly       The typesOnly flag for the search.
+   * @param  filterString    The string representation of the filter
+   *                         for the search.
+   * @param  attributes      The set of requested attributes for the
+   *                         search.
+   * @param  searchListener  The internal search listener that should
+   *                         be used to handle the matching entries
+   *                         and references.
+   *
+   * @return  A reference to the internal search operation that was
+   *          processed and contains information about the result of
+   *          the processing as well as lists of the matching entries
+   *          and search references.
+   *
+   * @throws  DirectoryException  If the provided filter string cannot
+   *                              be decoded as a search filter.
+   */
+  public InternalSearchOperation
+              processSearch(String rawBaseDN, SearchScope scope,
+                            DereferencePolicy derefPolicy,
+                            int sizeLimit, int timeLimit,
+                            boolean typesOnly, String filterString,
+                            LinkedHashSet<String> attributes,
+                            InternalSearchListener searchListener)
+         throws DirectoryException
+  {
+    RawFilter rawFilter;
+    try
+    {
+      rawFilter = RawFilter.create(filterString);
+    }
+    catch (LDAPException le)
+    {
+      throw new DirectoryException(
+                     ResultCode.valueOf(le.getResultCode()),
+                     le.getErrorMessage(), le.getMessageID(), le);
+    }
+
+    return processSearch(new ASN1OctetString(rawBaseDN), scope,
+                         derefPolicy, sizeLimit, timeLimit, typesOnly,
+                         rawFilter, attributes, searchListener);
+  }
+
+
+
+  /**
+   * Processes an internal search operation with the provided
+   * information.  It will not dereference any aliases, will not
+   * request a size or time limit, and will retrieve all user
+   * attributes.
+   *
    * @param  rawBaseDN  The base DN for the search.
    * @param  scope      The scope for the search.
    * @param  filter     The filter for the search.
@@ -1151,7 +1476,7 @@
    */
   public InternalSearchOperation processSearch(ByteString rawBaseDN,
                                       SearchScope scope,
-                                      LDAPFilter filter)
+                                      RawFilter filter)
   {
     return processSearch(rawBaseDN, scope,
                          DereferencePolicy.NEVER_DEREF_ALIASES, 0, 0,
@@ -1185,7 +1510,7 @@
                             SearchScope scope,
                             DereferencePolicy derefPolicy,
                             int sizeLimit, int timeLimit,
-                            boolean typesOnly, LDAPFilter filter,
+                            boolean typesOnly, RawFilter filter,
                             LinkedHashSet<String> attributes)
   {
     InternalSearchOperation searchOperation =
@@ -1230,7 +1555,7 @@
                             SearchScope scope,
                             DereferencePolicy derefPolicy,
                             int sizeLimit, int timeLimit,
-                            boolean typesOnly, LDAPFilter filter,
+                            boolean typesOnly, RawFilter filter,
                             LinkedHashSet<String> attributes,
                             InternalSearchListener searchListener)
   {
diff --git a/opends/src/server/org/opends/server/protocols/internal/InternalSearchOperation.java b/opends/src/server/org/opends/server/protocols/internal/InternalSearchOperation.java
index d2fd9fa..3e1a2a1 100644
--- a/opends/src/server/org/opends/server/protocols/internal/InternalSearchOperation.java
+++ b/opends/src/server/org/opends/server/protocols/internal/InternalSearchOperation.java
@@ -34,12 +34,12 @@
 
 import org.opends.server.api.ClientConnection;
 import org.opends.server.core.SearchOperation;
-import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.Control;
 import org.opends.server.types.DN;
 import org.opends.server.types.DereferencePolicy;
 import org.opends.server.types.DirectoryException;
+import org.opends.server.types.RawFilter;
 import org.opends.server.types.SearchFilter;
 import org.opends.server.types.SearchResultEntry;
 import org.opends.server.types.SearchResultReference;
@@ -108,7 +108,7 @@
               List<Control> requestControls, ByteString rawBaseDN,
               SearchScope scope, DereferencePolicy derefPolicy,
               int sizeLimit, int timeLimit, boolean typesOnly,
-              LDAPFilter rawFilter, LinkedHashSet<String> attributes,
+              RawFilter rawFilter, LinkedHashSet<String> attributes,
               InternalSearchListener searchListener)
   {
     super(internalConnection, operationID, messageID, requestControls,
diff --git a/opends/src/server/org/opends/server/protocols/jmx/JmxClientConnection.java b/opends/src/server/org/opends/server/protocols/jmx/JmxClientConnection.java
index 03b4522..98672a1 100644
--- a/opends/src/server/org/opends/server/protocols/jmx/JmxClientConnection.java
+++ b/opends/src/server/org/opends/server/protocols/jmx/JmxClientConnection.java
@@ -43,8 +43,6 @@
 import org.opends.server.protocols.internal.InternalSearchOperation ;
 import org.opends.server.protocols.internal.InternalSearchListener;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import org.opends.server.types.DebugLogLevel;
 import org.opends.server.types.AuthenticationInfo;
 import org.opends.server.types.CancelRequest;
@@ -55,9 +53,14 @@
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DisconnectReason;
 import org.opends.server.types.IntermediateResponse;
+import org.opends.server.types.Operation;
+import org.opends.server.types.RawAttribute;
+import org.opends.server.types.RawModification;
 import org.opends.server.types.SearchResultEntry;
 import org.opends.server.types.SearchResultReference;
 import org.opends.server.types.SearchScope;
+
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 
 
@@ -69,8 +72,6 @@
 public class JmxClientConnection
        extends ClientConnection implements NotificationListener
 {
-
-
   // The message ID counter to use for jmx connections.
   private AtomicInteger nextMessageID;
 
@@ -462,7 +463,7 @@
    *          information about the result of the processing.
    */
   public AddOperation processAdd(ASN1OctetString rawEntryDN,
-                                 ArrayList<LDAPAttribute> rawAttributes)
+                                 ArrayList<RawAttribute> rawAttributes)
   {
     AddOperation addOperation =
          new AddOperation(this, nextOperationID(), nextMessageID(),
@@ -554,7 +555,7 @@
    *          contains information about the result of the processing
    */
   public ModifyOperation processModify(ASN1OctetString rawEntryDN,
-                              ArrayList<LDAPModification> rawModifications)
+                              ArrayList<RawModification> rawModifications)
   {
     ModifyOperation modifyOperation =
          new ModifyOperation(this, nextOperationID(), nextMessageID(),
diff --git a/opends/src/server/org/opends/server/protocols/jmx/RmiAuthenticator.java b/opends/src/server/org/opends/server/protocols/jmx/RmiAuthenticator.java
index 521dbd8..3cf323b 100644
--- a/opends/src/server/org/opends/server/protocols/jmx/RmiAuthenticator.java
+++ b/opends/src/server/org/opends/server/protocols/jmx/RmiAuthenticator.java
@@ -37,12 +37,12 @@
 import org.opends.server.core.PluginConfigManager;
 import org.opends.server.messages.CoreMessages;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.Control;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.DN;
 import org.opends.server.types.AuthenticationInfo;
+import org.opends.server.types.LDAPException;
 
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
diff --git a/opends/src/server/org/opends/server/protocols/ldap/AbandonRequestProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/AbandonRequestProtocolOp.java
index d16a450..5780be4 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/AbandonRequestProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/AbandonRequestProtocolOp.java
@@ -31,6 +31,8 @@
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1Integer;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
+
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import static org.opends.server.messages.MessageHandler.*;
@@ -49,9 +51,6 @@
 public class AbandonRequestProtocolOp
        extends ProtocolOp
 {
-
-
-
   // The message ID of the operation to abandon.
   private int idToAbandon;
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/AddRequestProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/AddRequestProtocolOp.java
index 70705bf..3a70861 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/AddRequestProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/AddRequestProtocolOp.java
@@ -35,11 +35,13 @@
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
+import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
+import org.opends.server.types.RawAttribute;
 import org.opends.server.util.Base64;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
-import org.opends.server.types.DebugLogLevel;
+
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -48,6 +50,7 @@
 import static org.opends.server.util.StaticUtils.*;
 
 
+
 /**
  * This class defines the structures and methods for an LDAP add request
  * protocol op, which is used to add a new entry to the Directory Server.
@@ -55,11 +58,8 @@
 public class AddRequestProtocolOp
        extends ProtocolOp
 {
-
-
-
   // The set of attributes for this add request.
-  private List<LDAPAttribute> attributes;
+  private List<RawAttribute> attributes;
 
   // The DN for this add request.
   private ASN1OctetString dn;
@@ -75,7 +75,7 @@
   public AddRequestProtocolOp(ASN1OctetString dn)
   {
     this.dn         = dn;
-    this.attributes = new ArrayList<LDAPAttribute>();
+    this.attributes = new ArrayList<RawAttribute>();
   }
 
 
@@ -88,13 +88,13 @@
    * @param  attributes  The set of attributes for this add request.
    */
   public AddRequestProtocolOp(ASN1OctetString dn,
-                              ArrayList<LDAPAttribute> attributes)
+                              ArrayList<RawAttribute> attributes)
   {
     this.dn = dn;
 
     if (attributes == null)
     {
-      this.attributes = new ArrayList<LDAPAttribute>();
+      this.attributes = new ArrayList<RawAttribute>();
     }
     else
     {
@@ -134,7 +134,7 @@
    *
    * @return  The set of attributes for this add request.
    */
-  public List<LDAPAttribute> getAttributes()
+  public List<RawAttribute> getAttributes()
   {
     return attributes;
   }
@@ -179,7 +179,7 @@
 
     ArrayList<ASN1Element> attrElements =
          new ArrayList<ASN1Element>(attributes.size());
-    for (LDAPAttribute attr : attributes)
+    for (RawAttribute attr : attributes)
     {
       attrElements.add(attr.encode());
     }
@@ -250,12 +250,12 @@
 
 
 
-    ArrayList<LDAPAttribute> attributes;
+    ArrayList<RawAttribute> attributes;
     try
     {
       ArrayList<ASN1Element> attrElements =
            elements.get(1).decodeAsSequence().elements();
-      attributes = new ArrayList<LDAPAttribute>(attrElements.size());
+      attributes = new ArrayList<RawAttribute>(attrElements.size());
       for (ASN1Element e : attrElements)
       {
         attributes.add(LDAPAttribute.decode(e));
@@ -293,7 +293,7 @@
 
     if (! attributes.isEmpty())
     {
-      Iterator<LDAPAttribute> iterator = attributes.iterator();
+      Iterator<RawAttribute> iterator = attributes.iterator();
       iterator.next().toString(buffer);
 
       while (iterator.hasNext())
@@ -336,7 +336,7 @@
     buffer.append("  Attributes:");
     buffer.append(EOL);
 
-    for (LDAPAttribute attribute : attributes)
+    for (RawAttribute attribute : attributes)
     {
       attribute.toString(buffer, indent+4);
     }
@@ -401,7 +401,7 @@
 
 
     // Add the attributes to the buffer.
-    for (LDAPAttribute a : attributes)
+    for (RawAttribute a : attributes)
     {
       String name       = a.getAttributeType();
       int    nameLength = name.length();
diff --git a/opends/src/server/org/opends/server/protocols/ldap/AddResponseProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/AddResponseProtocolOp.java
index 31d190a..ce0a988 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/AddResponseProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/AddResponseProtocolOp.java
@@ -36,11 +36,11 @@
 import org.opends.server.protocols.asn1.ASN1Enumerated;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.types.DN;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.DN;
+import org.opends.server.types.LDAPException;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -57,9 +57,6 @@
 public class AddResponseProtocolOp
        extends ProtocolOp
 {
-
-
-
   // The matched DN for this response.
   private DN matchedDN;
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/BindRequestProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/BindRequestProtocolOp.java
index 24b10f6..f8bd506 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/BindRequestProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/BindRequestProtocolOp.java
@@ -36,6 +36,7 @@
 import org.opends.server.protocols.asn1.ASN1Sequence;
 import org.opends.server.types.AuthenticationType;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
 
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
diff --git a/opends/src/server/org/opends/server/protocols/ldap/BindResponseProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/BindResponseProtocolOp.java
index 2055969..72749a9 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/BindResponseProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/BindResponseProtocolOp.java
@@ -38,9 +38,9 @@
 import org.opends.server.protocols.asn1.ASN1Sequence;
 import org.opends.server.types.DN;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -57,9 +57,6 @@
 public class BindResponseProtocolOp
        extends ProtocolOp
 {
-
-
-
   // The server SASL credentials for this response.
   private ASN1OctetString serverSASLCredentials;
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/CompareRequestProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/CompareRequestProtocolOp.java
index 4c511cb..b309163 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/CompareRequestProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/CompareRequestProtocolOp.java
@@ -33,10 +33,10 @@
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
+
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -52,9 +52,6 @@
 public class CompareRequestProtocolOp
        extends ProtocolOp
 {
-
-
-
   // The assertion value for this compare request.
   private ASN1OctetString assertionValue;
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/CompareResponseProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/CompareResponseProtocolOp.java
index db3266b..406ee71 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/CompareResponseProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/CompareResponseProtocolOp.java
@@ -36,11 +36,11 @@
 import org.opends.server.protocols.asn1.ASN1Enumerated;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.types.DN;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.DN;
+import org.opends.server.types.LDAPException;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -57,9 +57,6 @@
 public class CompareResponseProtocolOp
        extends ProtocolOp
 {
-
-
-
   // The matched DN for this response.
   private DN matchedDN;
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/DeleteRequestProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/DeleteRequestProtocolOp.java
index ba6390a..f29db79 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/DeleteRequestProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/DeleteRequestProtocolOp.java
@@ -30,10 +30,10 @@
 
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
+
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -48,9 +48,6 @@
 public class DeleteRequestProtocolOp
        extends ProtocolOp
 {
-
-
-
   // The DN for this delete request.
   private ASN1OctetString dn;
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/DeleteResponseProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/DeleteResponseProtocolOp.java
index 9ed6cdb..32e48b8 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/DeleteResponseProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/DeleteResponseProtocolOp.java
@@ -36,11 +36,11 @@
 import org.opends.server.protocols.asn1.ASN1Enumerated;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.types.DN;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.DN;
+import org.opends.server.types.LDAPException;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
diff --git a/opends/src/server/org/opends/server/protocols/ldap/ExtendedRequestProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/ExtendedRequestProtocolOp.java
index 414d4b0..c5dcc14 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/ExtendedRequestProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/ExtendedRequestProtocolOp.java
@@ -33,10 +33,10 @@
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
+
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -52,9 +52,6 @@
 public class ExtendedRequestProtocolOp
        extends ProtocolOp
 {
-
-
-
   // The value for this extended request.
   private ASN1OctetString value;
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/ExtendedResponseProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/ExtendedResponseProtocolOp.java
index 047b2a5..a3f81d3 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/ExtendedResponseProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/ExtendedResponseProtocolOp.java
@@ -36,11 +36,11 @@
 import org.opends.server.protocols.asn1.ASN1Enumerated;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.types.DN;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.DN;
+import org.opends.server.types.LDAPException;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -57,9 +57,6 @@
 public class ExtendedResponseProtocolOp
        extends ProtocolOp
 {
-
-
-
   // The value for this extended response.
   private ASN1OctetString value;
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/IntermediateResponseProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/IntermediateResponseProtocolOp.java
index 9a7e907..52e041e 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/IntermediateResponseProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/IntermediateResponseProtocolOp.java
@@ -34,10 +34,10 @@
 import org.opends.server.protocols.asn1.ASN1Exception;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
+
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -55,9 +55,6 @@
 public class IntermediateResponseProtocolOp
        extends ProtocolOp
 {
-
-
-
   // The value for this intermediate response.
   private ASN1OctetString value;
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/LDAPAttribute.java b/opends/src/server/org/opends/server/protocols/ldap/LDAPAttribute.java
index 9dbec18..1b12fc0 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/LDAPAttribute.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/LDAPAttribute.java
@@ -31,19 +31,17 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
+import java.util.List;
 
 import org.opends.server.core.DirectoryServer;
-import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.protocols.asn1.ASN1Set;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
-import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
+import org.opends.server.types.RawAttribute;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPResultCode.*;
@@ -59,6 +57,7 @@
  * entry.
  */
 public class LDAPAttribute
+       extends RawAttribute
 {
   // The set of values for this attribute.
   private ArrayList<ASN1OctetString> values;
@@ -83,6 +82,64 @@
 
 
   /**
+   * Creates a new LDAP attribute with the provided type and no values.
+   *
+   * @param  attributeType  The attribute type for this attribute.
+   * @param  value          The value to use for this attribute.
+   */
+  public LDAPAttribute(String attributeType, String value)
+  {
+    this.attributeType = attributeType;
+
+    values = new ArrayList<ASN1OctetString>(1);
+    values.add(new ASN1OctetString(value));
+  }
+
+
+
+  /**
+   * Creates a new LDAP attribute with the provided type and no values.
+   *
+   * @param  attributeType  The attribute type for this attribute.
+   * @param  value          The value to use for this attribute.
+   */
+  public LDAPAttribute(String attributeType, ASN1OctetString value)
+  {
+    this.attributeType = attributeType;
+
+    values = new ArrayList<ASN1OctetString>(1);
+    values.add(value);
+  }
+
+
+
+  /**
+   * Creates a new LDAP attribute with the provided type and values.
+   *
+   * @param  attributeType  The attribute type for this attribute.
+   * @param  values         The set of values for this attribute.
+   */
+  public LDAPAttribute(String attributeType, List<String> values)
+  {
+    this.attributeType = attributeType;
+
+    if (values == null)
+    {
+      this.values = new ArrayList<ASN1OctetString>(0);
+    }
+    else
+    {
+      this.values = new ArrayList<ASN1OctetString>(values.size());
+      for (String value : values)
+      {
+        this.values.add(new ASN1OctetString(value));
+      }
+    }
+  }
+
+
+
+  /**
    * Creates a new LDAP attribute with the provided type and values.
    *
    * @param  attributeType  The attribute type for this attribute.
@@ -181,116 +238,6 @@
 
 
   /**
-   * Encodes this attribute to an ASN.1 element.
-   *
-   * @return  The ASN.1 element containing the encoded attribute.
-   */
-  public ASN1Element encode()
-  {
-    ArrayList<ASN1Element> elements = new ArrayList<ASN1Element>(2);
-    elements.add(new ASN1OctetString(attributeType));
-
-    if ((values == null) || values.isEmpty())
-    {
-      elements.add(new ASN1Set());
-    }
-    else
-    {
-      elements.add(new ASN1Set(new ArrayList<ASN1Element>(values)));
-    }
-
-    return new ASN1Sequence(elements);
-  }
-
-
-
-  /**
-   * Decodes the provided ASN.1 element as an LDAP attribute.
-   *
-   * @param  element  The ASN.1 element to decode.
-   *
-   * @return  The decoded LDAP attribute.
-   *
-   * @throws  LDAPException  If a problem occurs while trying to decode the
-   *                         provided ASN.1 element as an LDAP attribute.
-   */
-  public static LDAPAttribute decode(ASN1Element element)
-         throws LDAPException
-  {
-    ArrayList<ASN1Element> elements;
-    try
-    {
-      elements = element.decodeAsSequence().elements();
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int msgID = MSGID_LDAP_ATTRIBUTE_DECODE_SEQUENCE;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    int numElements = elements.size();
-    if (numElements != 2)
-    {
-      int msgID = MSGID_LDAP_ATTRIBUTE_DECODE_INVALID_ELEMENT_COUNT;
-      String message = getMessage(msgID, numElements);
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message);
-    }
-
-
-    String attributeType;
-    try
-    {
-      attributeType = elements.get(0).decodeAsOctetString().stringValue();
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int msgID = MSGID_LDAP_ATTRIBUTE_DECODE_TYPE;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    ArrayList<ASN1OctetString> values;
-    try
-    {
-      ArrayList<ASN1Element> valueElements =
-           elements.get(1).decodeAsSet().elements();
-      values = new ArrayList<ASN1OctetString>(valueElements.size());
-      for (ASN1Element e : valueElements)
-      {
-        values.add(e.decodeAsOctetString());
-      }
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int msgID = MSGID_LDAP_ATTRIBUTE_DECODE_VALUES;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-    return new LDAPAttribute(attributeType, values);
-  }
-
-
-
-  /**
    * Retrieves a core attribute containing the information for this LDAP
    * attribute.
    *
diff --git a/opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java b/opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
index 5149cc9..d23ae7b 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/LDAPClientConnection.java
@@ -51,7 +51,6 @@
 import org.opends.server.core.ExtendedOperation;
 import org.opends.server.core.ModifyOperation;
 import org.opends.server.core.ModifyDNOperation;
-import org.opends.server.core.Operation;
 import org.opends.server.core.PersistentSearch;
 import org.opends.server.core.PluginConfigManager;
 import org.opends.server.core.SearchOperation;
@@ -71,6 +70,7 @@
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
 import org.opends.server.types.IntermediateResponse;
+import org.opends.server.types.Operation;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchResultEntry;
 import org.opends.server.types.SearchResultReference;
@@ -1207,7 +1207,7 @@
       }
 
       int    msgID   = MSGID_LDAP_CLIENT_CANNOT_ENQUEUE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new DirectoryException(DirectoryServer.getServerErrorResultCode(),
                                    message, msgID, e);
     }
diff --git a/opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java b/opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java
index 435375a..0ebb489 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/LDAPConnectionHandler.java
@@ -35,7 +35,7 @@
 import static org.opends.server.messages.MessageHandler.getMessage;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.util.ServerConstants.*;
-import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
+import static org.opends.server.util.StaticUtils.*;
 
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
@@ -1037,7 +1037,7 @@
                     String message = getMessage(msgID,
                         clientConnection.getClientHostPort(),
                         clientConnection.getServerHostPort(),
-                        stackTraceToSingleLineString(e));
+                        getExceptionMessage(e));
 
                     logError(ErrorLogCategory.CONNECTION_HANDLING,
                         ErrorLogSeverity.SEVERE_ERROR, message, msgID);
@@ -1072,7 +1072,7 @@
             logError(ErrorLogCategory.CONNECTION_HANDLING,
                 ErrorLogSeverity.SEVERE_WARNING,
                 MSGID_LDAP_CONNHANDLER_CANNOT_ACCEPT_CONNECTION,
-                currentConfig.dn(), stackTraceToSingleLineString(e));
+                currentConfig.dn(), getExceptionMessage(e));
 
             if (lastIterationFailed) {
               // The last time through the accept loop we also
diff --git a/opends/src/server/org/opends/server/protocols/ldap/LDAPControl.java b/opends/src/server/org/opends/server/protocols/ldap/LDAPControl.java
index 588e569..762dc3b 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/LDAPControl.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/LDAPControl.java
@@ -36,9 +36,9 @@
 import org.opends.server.protocols.asn1.ASN1Sequence;
 import org.opends.server.types.Control;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.asn1.ASN1Constants.*;
@@ -54,8 +54,6 @@
  */
 public class LDAPControl
 {
-
-
   // The control wrapped by this LDAP control.
   private Control control;
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/LDAPFilter.java b/opends/src/server/org/opends/server/protocols/ldap/LDAPFilter.java
index 6286491..bee304b 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/LDAPFilter.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/LDAPFilter.java
@@ -38,23 +38,19 @@
 
 import org.opends.server.api.MatchingRule;
 import org.opends.server.core.DirectoryServer;
-import org.opends.server.protocols.asn1.ASN1Boolean;
-import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.protocols.asn1.ASN1Set;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
 import org.opends.server.types.ByteString;
+import org.opends.server.types.DebugLogLevel;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.FilterType;
+import org.opends.server.types.LDAPException;
+import org.opends.server.types.RawFilter;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchFilter;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
-import static org.opends.server.loggers.debug.DebugLogger.debugError;
-import org.opends.server.types.DebugLogLevel;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -69,33 +65,31 @@
  * entries in a search request.
  */
 public class LDAPFilter
+       extends RawFilter
 {
-
-
-
   // The set of subAny elements for substring filters.
-  private ArrayList<ASN1OctetString> subAnyElements;
+  private ArrayList<ByteString> subAnyElements;
 
   // The set of filter components for AND and OR filters.
-  private ArrayList<LDAPFilter> filterComponents;
-
-  // The assertion value for several filter types.
-  private ASN1OctetString assertionValue;
-
-  // The subFinal element for substring filters.
-  private ASN1OctetString subFinalElement;
-
-  // The subInitial element for substring filters.
-  private ASN1OctetString subInitialElement;
+  private ArrayList<RawFilter> filterComponents;
 
   // Indicates whether to match on DN attributes for extensible match filters.
   private boolean dnAttributes;
 
+  // The assertion value for several filter types.
+  private ByteString assertionValue;
+
+  // The subFinal element for substring filters.
+  private ByteString subFinalElement;
+
+  // The subInitial element for substring filters.
+  private ByteString subInitialElement;
+
   // The filter type for this filter.
   private FilterType filterType;
 
   // The filter component for NOT filters.
-  private LDAPFilter notComponent;
+  private RawFilter notComponent;
 
   // The attribute type for several filter types.
   private String attributeType;
@@ -106,7 +100,11 @@
 
 
   /**
-   * Creates a new LDAP filter with the provided information.
+   * Creates a new LDAP filter with the provided information.  Note that this
+   * constructor is only intended for use by the {@code RawFilter} class and any
+   * use of this constructor outside of that class must be very careful to
+   * ensure that all of the appropriate element types have been provided for the
+   * associated filter type.
    *
    * @param  filterType         The filter type for this filter.
    * @param  filterComponents   The filter components for AND and OR filters.
@@ -119,14 +117,13 @@
    * @param  matchingRuleID     The matching rule ID for extensible filters.
    * @param  dnAttributes       The dnAttributes flag for extensible filters.
    */
-  private LDAPFilter(FilterType filterType,
-                     ArrayList<LDAPFilter> filterComponents,
-                     LDAPFilter notComponent, String attributeType,
-                     ASN1OctetString assertionValue,
-                     ASN1OctetString subInitialElement,
-                     ArrayList<ASN1OctetString> subAnyElements,
-                     ASN1OctetString subFinalElement, String matchingRuleID,
-                     boolean dnAttributes)
+  public LDAPFilter(FilterType filterType,
+                    ArrayList<RawFilter> filterComponents,
+                    RawFilter notComponent, String attributeType,
+                    ByteString assertionValue, ByteString subInitialElement,
+                    ArrayList<ByteString> subAnyElements,
+                    ByteString subFinalElement, String matchingRuleID,
+                    boolean dnAttributes)
   {
     this.filterType        = filterType;
     this.filterComponents  = filterComponents;
@@ -156,7 +153,7 @@
       case AND:
       case OR:
         Collection<SearchFilter> comps = filter.getFilterComponents();
-        filterComponents = new ArrayList<LDAPFilter>(comps.size());
+        filterComponents = new ArrayList<RawFilter>(comps.size());
         for (SearchFilter f : comps)
         {
           filterComponents.add(new LDAPFilter(f));
@@ -229,11 +226,7 @@
         }
         else
         {
-          subAnyElements = new ArrayList<ASN1OctetString>(subAnyStrings.size());
-          for (ByteString s : subAnyStrings)
-          {
-            subAnyElements.add(s.toASN1OctetString());
-          }
+          subAnyElements = new ArrayList<ByteString>(subAnyStrings);
         }
 
         filterComponents  = null;
@@ -290,186 +283,6 @@
 
 
   /**
-   * Creates a new AND search filter with the provided filter components.
-   *
-   * @param  filterComponents  The filter components for this AND filter.
-   *
-   * @return  The AND search filter with the provided filter components.
-   */
-  public static LDAPFilter createANDFilter(ArrayList<LDAPFilter>
-                                                filterComponents)
-  {
-    return new LDAPFilter(FilterType.AND, filterComponents, null, null, null,
-                          null, null, null, null, false);
-  }
-
-
-
-  /**
-   * Creates a new OR search filter with the provided filter components.
-   *
-   * @param  filterComponents  The filter components for this OR filter.
-   *
-   * @return  The OR search filter with the provided filter components.
-   */
-  public static LDAPFilter createORFilter(ArrayList<LDAPFilter>
-                                               filterComponents)
-  {
-    return new LDAPFilter(FilterType.OR, filterComponents, null, null, null,
-                          null, null, null, null, false);
-  }
-
-
-
-  /**
-   * Creates a new NOT search filter with the provided filter component.
-   *
-   * @param  notComponent  The filter component for this NOT filter.
-   *
-   * @return  The NOT search filter with the provided filter component.
-   */
-  public static LDAPFilter createNOTFilter(LDAPFilter notComponent)
-  {
-    return new LDAPFilter(FilterType.NOT, null, notComponent, null, null, null,
-                          null, null, null, false);
-  }
-
-
-
-  /**
-   * Creates a new equality search filter with the provided information.
-   *
-   * @param  attributeType   The attribute type for this equality filter.
-   * @param  assertionValue  The assertion value for this equality filter.
-   *
-   * @return  The constructed equality search filter.
-   */
-  public static LDAPFilter createEqualityFilter(String attributeType,
-                                                ASN1OctetString assertionValue)
-  {
-    return new LDAPFilter(FilterType.EQUALITY, null, null, attributeType,
-                          assertionValue, null, null, null, null, false);
-  }
-
-
-
-  /**
-   * Creates a new substring search filter with the provided information.
-   *
-   * @param  attributeType      The attribute type for this substring filter.
-   * @param  subInitialElement  The subInitial element for this substring
-   *                            filter.
-   * @param  subAnyElements     The subAny elements for this substring filter.
-   * @param  subFinalElement    The subFinal element for this substring filter.
-   *
-   * @return  The constructed substring search filter.
-   */
-  public static LDAPFilter createSubstringFilter(String attributeType,
-                                ASN1OctetString subInitialElement,
-                                ArrayList<ASN1OctetString> subAnyElements,
-                                ASN1OctetString subFinalElement)
-  {
-    return new LDAPFilter(FilterType.SUBSTRING, null, null, attributeType, null,
-                          subInitialElement, subAnyElements, subFinalElement,
-                          null, false);
-  }
-
-
-
-  /**
-   * Creates a new greater or equal search filter with the provided information.
-   *
-   * @param  attributeType   The attribute type for this greater or equal
-   *                         filter.
-   * @param  assertionValue  The assertion value for this greater or equal
-   *                         filter.
-   *
-   * @return  The constructed greater or equal search filter.
-   */
-  public static LDAPFilter createGreaterOrEqualFilter(String attributeType,
-                                ASN1OctetString assertionValue)
-  {
-    return new LDAPFilter(FilterType.GREATER_OR_EQUAL, null, null,
-                          attributeType, assertionValue, null, null, null, null,
-                          false);
-  }
-
-
-
-  /**
-   * Creates a new less or equal search filter with the provided information.
-   *
-   * @param  attributeType   The attribute type for this less or equal filter.
-   * @param  assertionValue  The assertion value for this less or equal filter.
-   *
-   * @return  The constructed less or equal search filter.
-   */
-  public static LDAPFilter createLessOrEqualFilter(String attributeType,
-                                ASN1OctetString assertionValue)
-  {
-    return new LDAPFilter(FilterType.LESS_OR_EQUAL, null, null, attributeType,
-                          assertionValue, null, null, null, null, false);
-  }
-
-
-
-  /**
-   * Creates a new presence search filter with the provided attribute type.
-   *
-   * @param  attributeType  The attribute type for this presence filter.
-   *
-   * @return  The constructed presence search filter.
-   */
-  public static LDAPFilter createPresenceFilter(String attributeType)
-  {
-    return new LDAPFilter(FilterType.PRESENT, null, null, attributeType, null,
-                          null, null, null, null, false);
-  }
-
-
-
-  /**
-   * Creates a new approximate search filter with the provided information.
-   *
-   * @param  attributeType   The attribute type for this approximate filter.
-   * @param  assertionValue  The assertion value for this approximate filter.
-   *
-   * @return  The constructed approximate search filter.
-   */
-  public static LDAPFilter createApproximateFilter(String attributeType,
-                                ASN1OctetString assertionValue)
-  {
-    return new LDAPFilter(FilterType.APPROXIMATE_MATCH, null, null,
-                          attributeType, assertionValue, null, null, null, null,
-                          false);
-  }
-
-
-
-  /**
-   * Creates a new extensible matching search filter with the provided
-   * information.
-   *
-   * @param  matchingRuleID  The matching rule ID for this extensible filter.
-   * @param  attributeType   The attribute type for this extensible filter.
-   * @param  assertionValue  The assertion value for this extensible filter.
-   * @param  dnAttributes    The dnAttributes flag for this extensible filter.
-   *
-   * @return  The constructed extensible matching search filter.
-   */
-  public static LDAPFilter createExtensibleFilter(String matchingRuleID,
-                                String attributeType,
-                                ASN1OctetString assertionValue,
-                                boolean dnAttributes)
-  {
-    return new LDAPFilter(FilterType.EXTENSIBLE_MATCH, null, null,
-                          attributeType, assertionValue, null, null, null,
-                          matchingRuleID, dnAttributes);
-  }
-
-
-
-  /**
    * Decodes the provided string into an LDAP search filter.
    *
    * @param  filterString  The string representation of the search filter to
@@ -863,7 +676,7 @@
           throws LDAPException
   {
     // Create a list to hold the returned components.
-    ArrayList<LDAPFilter> filterComponents = new ArrayList<LDAPFilter>();
+    ArrayList<RawFilter> filterComponents = new ArrayList<RawFilter>();
 
 
     // If the end pos is equal to the start pos, then there are no components.
@@ -1001,7 +814,7 @@
 
     // If the value starts with an asterisk, then there is no subInitial
     // component.  Otherwise, parse out the subInitial.
-    ASN1OctetString subInitial;
+    ByteString subInitial;
     int firstPos = asteriskPositions.removeFirst();
     if (firstPos == 0)
     {
@@ -1174,7 +987,7 @@
 
 
     // Next, process through the rest of the asterisks to get the subAny values.
-    ArrayList<ASN1OctetString> subAny = new ArrayList<ASN1OctetString>();
+    ArrayList<ByteString> subAny = new ArrayList<ByteString>();
     for (int asteriskPos : asteriskPositions)
     {
       int length = asteriskPos - firstPos - 1;
@@ -1348,7 +1161,7 @@
 
     // Finally, see if there is anything after the last asterisk, which would be
     // the subFinal value.
-    ASN1OctetString subFinal;
+    ByteString subFinal;
     if (firstPos == (valueBytes.length-1))
     {
       subFinal = null;
@@ -1626,7 +1439,7 @@
       }
     }
 
-    ASN1OctetString value;
+    ByteString value;
     if (hasEscape)
     {
       ByteBuffer valueBuffer = ByteBuffer.allocate(valueBytes.length);
@@ -1813,7 +1626,7 @@
    * @return  The set of subordinate filter components for AND and OR searches,
    *          or <CODE>null</CODE> if this is not an AND or OR search.
    */
-  public ArrayList<LDAPFilter> getFilterComponents()
+  public ArrayList<RawFilter> getFilterComponents()
   {
     return filterComponents;
   }
@@ -1827,7 +1640,7 @@
    * @param  filterComponents  The set of subordinate filter components for AND
    *                           or OR searches.
    */
-  public void setFilterComponents(ArrayList<LDAPFilter> filterComponents)
+  public void setFilterComponents(ArrayList<RawFilter> filterComponents)
   {
     this.filterComponents = filterComponents;
   }
@@ -1840,7 +1653,7 @@
    * @return  The subordinate filter component for NOT searches, or
    *          <CODE>null</CODE> if this is not a NOT search.
    */
-  public LDAPFilter getNOTComponent()
+  public RawFilter getNOTComponent()
   {
     return notComponent;
   }
@@ -1853,7 +1666,7 @@
    *
    * @param  notComponent  The subordinate filter component for NOT searches.
    */
-  public void setNOTComponent(LDAPFilter notComponent)
+  public void setNOTComponent(RawFilter notComponent)
   {
     this.notComponent = notComponent;
   }
@@ -1895,7 +1708,7 @@
    * @return  The assertion value for this search filter, or <CODE>null</CODE>
    *          if there is none.
    */
-  public ASN1OctetString getAssertionValue()
+  public ByteString getAssertionValue()
   {
     return assertionValue;
   }
@@ -1908,7 +1721,7 @@
    *
    * @param  assertionValue  The assertion value for this search filter.
    */
-  public void setAssertionValue(ASN1OctetString assertionValue)
+  public void setAssertionValue(ByteString assertionValue)
   {
     this.assertionValue = assertionValue;
   }
@@ -1923,7 +1736,7 @@
    * @return  The subInitial component for this substring filter, or
    *          <CODE>null</CODE> if there is none.
    */
-  public ASN1OctetString getSubInitialElement()
+  public ByteString getSubInitialElement()
   {
     return subInitialElement;
   }
@@ -1937,7 +1750,7 @@
    * @param  subInitialElement  The subInitial element for this substring
    *                            filter.
    */
-  public void setSubInitialElement(ASN1OctetString subInitialElement)
+  public void setSubInitialElement(ByteString subInitialElement)
   {
     this.subInitialElement = subInitialElement;
   }
@@ -1952,7 +1765,7 @@
    * @return  The set of subAny elements for this substring filter, or
    *          <CODE>null</CODE> if there are none.
    */
-  public ArrayList<ASN1OctetString> getSubAnyElements()
+  public ArrayList<ByteString> getSubAnyElements()
   {
     return subAnyElements;
   }
@@ -1966,7 +1779,7 @@
    * @param  subAnyElements  The set of subAny elements for this substring
    *                         filter.
    */
-  public void setSubAnyElements(ArrayList<ASN1OctetString> subAnyElements)
+  public void setSubAnyElements(ArrayList<ByteString> subAnyElements)
   {
     this.subAnyElements = subAnyElements;
   }
@@ -1981,7 +1794,7 @@
    * @return  The subFinal element for this substring filter, or
    *          <CODE>null</CODE> if there is none.
    */
-  public ASN1OctetString getSubFinalElement()
+  public ByteString getSubFinalElement()
   {
     return subFinalElement;
   }
@@ -1994,7 +1807,7 @@
    *
    * @param  subFinalElement  The subFinal element for this substring filter.
    */
-  public void setSubFinalElement(ASN1OctetString subFinalElement)
+  public void setSubFinalElement(ByteString subFinalElement)
   {
     this.subFinalElement = subFinalElement;
   }
@@ -2060,662 +1873,6 @@
 
 
   /**
-   * Encodes this search filter to an ASN.1 element.
-   *
-   * @return  The ASN.1 element containing the encoded search filter.
-   */
-  public ASN1Element encode()
-  {
-    switch (filterType)
-    {
-      case AND:
-      case OR:
-        ArrayList<ASN1Element> elements =
-             new ArrayList<ASN1Element>(filterComponents.size());
-        for (LDAPFilter f : filterComponents)
-        {
-          elements.add(f.encode());
-        }
-        return new ASN1Set(filterType.getBERType(), elements);
-      case NOT:
-        return new ASN1Element(filterType.getBERType(),
-                               notComponent.encode().encode());
-      case EQUALITY:
-      case GREATER_OR_EQUAL:
-      case LESS_OR_EQUAL:
-      case APPROXIMATE_MATCH:
-        elements = new ArrayList<ASN1Element>(2);
-        elements.add(new ASN1OctetString(attributeType));
-        elements.add(assertionValue);
-        return new ASN1Sequence(filterType.getBERType(), elements);
-      case SUBSTRING:
-        elements = new ArrayList<ASN1Element>(2);
-        elements.add(new ASN1OctetString(attributeType));
-
-        ArrayList<ASN1Element> subElements = new ArrayList<ASN1Element>();
-        if (subInitialElement != null)
-        {
-          subInitialElement.setType(TYPE_SUBINITIAL);
-          subElements.add(subInitialElement);
-        }
-
-        if ((subAnyElements != null) && (! subAnyElements.isEmpty()))
-        {
-          for (ASN1OctetString s : subAnyElements)
-          {
-            s.setType(TYPE_SUBANY);
-            subElements.add(s);
-          }
-        }
-
-        if (subFinalElement != null)
-        {
-          subFinalElement.setType(TYPE_SUBFINAL);
-          subElements.add(subFinalElement);
-        }
-
-        elements.add(new ASN1Sequence(subElements));
-        return new ASN1Sequence(filterType.getBERType(), elements);
-      case PRESENT:
-        return new ASN1OctetString(filterType.getBERType(), attributeType);
-      case EXTENSIBLE_MATCH:
-        elements = new ArrayList<ASN1Element>(4);
-        if (matchingRuleID != null)
-        {
-          elements.add(new ASN1OctetString(TYPE_MATCHING_RULE_ID,
-                                           matchingRuleID));
-        }
-
-        if (attributeType != null)
-        {
-          elements.add(new ASN1OctetString(TYPE_MATCHING_RULE_TYPE,
-                                           attributeType));
-        }
-
-        assertionValue.setType(TYPE_MATCHING_RULE_VALUE);
-        elements.add(assertionValue);
-
-        if (dnAttributes)
-        {
-          elements.add(new ASN1Boolean(TYPE_MATCHING_RULE_DN_ATTRIBUTES, true));
-        }
-
-        return new ASN1Sequence(filterType.getBERType(), elements);
-      default:
-        if (debugEnabled())
-        {
-          debugError("Invalid search filter type: %s", filterType);
-        }
-        return null;
-    }
-  }
-
-
-
-  /**
-   * Decodes the provided ASN.1 element as an LDAP search filter.
-   *
-   * @param  element  The ASN.1 element to decode.
-   *
-   * @return  The decoded search filter.
-   *
-   * @throws  LDAPException  If the provided ASN.1 element cannot be decoded as
-   *                         an LDAP search filter.
-   */
-  public static LDAPFilter decode(ASN1Element element)
-         throws LDAPException
-  {
-    if (element == null)
-    {
-      int    msgID   = MSGID_LDAP_FILTER_DECODE_NULL;
-      String message = getMessage(msgID);
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message);
-    }
-
-    switch (element.getType())
-    {
-      case TYPE_FILTER_AND:
-      case TYPE_FILTER_OR:
-        return decodeCompoundFilter(element);
-
-      case TYPE_FILTER_NOT:
-        return decodeNotFilter(element);
-
-      case TYPE_FILTER_EQUALITY:
-      case TYPE_FILTER_GREATER_OR_EQUAL:
-      case TYPE_FILTER_LESS_OR_EQUAL:
-      case TYPE_FILTER_APPROXIMATE:
-        return decodeTypeAndValueFilter(element);
-
-      case TYPE_FILTER_SUBSTRING:
-        return decodeSubstringFilter(element);
-
-      case TYPE_FILTER_PRESENCE:
-        return decodePresenceFilter(element);
-
-      case TYPE_FILTER_EXTENSIBLE_MATCH:
-        return decodeExtensibleMatchFilter(element);
-
-      default:
-        int    msgID   = MSGID_LDAP_FILTER_DECODE_INVALID_TYPE;
-        String message = getMessage(msgID, element.getType());
-        throw new LDAPException(PROTOCOL_ERROR, msgID, message);
-    }
-  }
-
-
-
-  /**
-   * Decodes the provided ASN.1 element as a compound filter (i.e., one that
-   * holds a set of subordinate filter components, like AND or OR filters).
-   *
-   * @param  element  the ASN.1 element to decode.
-   *
-   * @return  The decoded LDAP search filter.
-   *
-   * @throws  LDAPException  If a problem occurs while trying to decode the
-   *                         provided ASN.1 element as an LDAP search filter.
-   */
-  private static LDAPFilter decodeCompoundFilter(ASN1Element element)
-          throws LDAPException
-  {
-    FilterType filterType;
-    switch (element.getType())
-    {
-      case TYPE_FILTER_AND:
-        filterType = FilterType.AND;
-        break;
-      case TYPE_FILTER_OR:
-        filterType = FilterType.OR;
-        break;
-      default:
-        // This should never happen.
-        if (debugEnabled())
-        {
-          debugError("Invalid filter type %x for a compound filter",
-                     element.getType());
-        }
-        filterType = null;
-    }
-
-
-    ArrayList<ASN1Element> elements;
-    try
-    {
-      elements = element.decodeAsSet().elements();
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int msgID = MSGID_LDAP_FILTER_DECODE_COMPOUND_SET;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    ArrayList<LDAPFilter> filterComponents =
-         new ArrayList<LDAPFilter>(elements.size());
-    try
-    {
-      for (ASN1Element e : elements)
-      {
-        filterComponents.add(LDAPFilter.decode(e));
-      }
-    }
-    catch (LDAPException le)
-    {
-      throw le;
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int msgID = MSGID_LDAP_FILTER_DECODE_COMPOUND_COMPONENTS;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    return new LDAPFilter(filterType, filterComponents, null, null, null, null,
-                          null, null, null, false);
-  }
-
-
-
-  /**
-   * Decodes the provided ASN.1 element as a NOT filter.
-   *
-   * @param  element  the ASN.1 element to decode.
-   *
-   * @return  The decoded LDAP search filter.
-   *
-   * @throws  LDAPException  If a problem occurs while trying to decode the
-   *                         provided ASN.1 element as an LDAP search filter.
-   */
-  private static LDAPFilter decodeNotFilter(ASN1Element element)
-          throws LDAPException
-  {
-    ASN1Element notFilterElement;
-    try
-    {
-      notFilterElement = ASN1Element.decode(element.value());
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int    msgID   = MSGID_LDAP_FILTER_DECODE_NOT_ELEMENT;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    LDAPFilter notComponent;
-    try
-    {
-      notComponent = LDAPFilter.decode(notFilterElement);
-    }
-    catch (LDAPException le)
-    {
-      throw le;
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int    msgID   = MSGID_LDAP_FILTER_DECODE_NOT_COMPONENT;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    return new LDAPFilter(FilterType.NOT, null, notComponent, null, null, null,
-                          null, null, null, false);
-  }
-
-
-
-  /**
-   * Decodes the provided ASN.1 element as a filter containing an attribute type
-   * and an assertion value.  This includes equality, greater or equal, less or
-   * equal, and approximate search filters.
-   *
-   * @param  element  the ASN.1 element to decode.
-   *
-   * @return  The decoded LDAP search filter.
-   *
-   * @throws  LDAPException  If a problem occurs while trying to decode the
-   *                         provided ASN.1 element as an LDAP search filter.
-   */
-  private static LDAPFilter decodeTypeAndValueFilter(ASN1Element element)
-          throws LDAPException
-  {
-    FilterType filterType;
-    switch (element.getType())
-    {
-      case TYPE_FILTER_EQUALITY:
-        filterType = FilterType.EQUALITY;
-        break;
-      case TYPE_FILTER_GREATER_OR_EQUAL:
-        filterType = FilterType.GREATER_OR_EQUAL;
-        break;
-      case TYPE_FILTER_LESS_OR_EQUAL:
-        filterType = FilterType.LESS_OR_EQUAL;
-        break;
-      case TYPE_FILTER_APPROXIMATE:
-        filterType = FilterType.APPROXIMATE_MATCH;
-        break;
-      default:
-        // This should never happen.
-        if (debugEnabled())
-        {
-          debugError("Invalid filter type %x for a type-and-value filter",
-                     element.getType());
-        }
-        filterType = null;
-    }
-
-
-    ArrayList<ASN1Element> elements;
-    try
-    {
-      elements = element.decodeAsSequence().elements();
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int    msgID   = MSGID_LDAP_FILTER_DECODE_TV_SEQUENCE;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    if (elements.size() != 2)
-    {
-      int    msgID   = MSGID_LDAP_FILTER_DECODE_TV_INVALID_ELEMENT_COUNT;
-      String message = getMessage(msgID, elements.size());
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message);
-    }
-
-
-    String attributeType;
-    try
-    {
-      attributeType = elements.get(0).decodeAsOctetString().stringValue();
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int    msgID   = MSGID_LDAP_FILTER_DECODE_TV_TYPE;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    ASN1OctetString assertionValue;
-    try
-    {
-      assertionValue = elements.get(1).decodeAsOctetString();
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int    msgID   = MSGID_LDAP_FILTER_DECODE_TV_VALUE;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    return new LDAPFilter(filterType, null, null, attributeType, assertionValue,
-                          null, null, null, null, false);
-  }
-
-
-
-  /**
-   * Decodes the provided ASN.1 element as a substring filter.
-   *
-   * @param  element  the ASN.1 element to decode.
-   *
-   * @return  The decoded LDAP search filter.
-   *
-   * @throws  LDAPException  If a problem occurs while trying to decode the
-   *                         provided ASN.1 element as an LDAP search filter.
-   */
-  private static LDAPFilter decodeSubstringFilter(ASN1Element element)
-          throws LDAPException
-  {
-    ArrayList<ASN1Element> elements;
-    try
-    {
-      elements = element.decodeAsSequence().elements();
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int    msgID   = MSGID_LDAP_FILTER_DECODE_SUBSTRING_SEQUENCE;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    if (elements.size() != 2)
-    {
-      int    msgID   = MSGID_LDAP_FILTER_DECODE_SUBSTRING_INVALID_ELEMENT_COUNT;
-      String message = getMessage(msgID, elements.size());
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message);
-    }
-
-
-    String attributeType;
-    try
-    {
-      attributeType = elements.get(0).decodeAsOctetString().stringValue();
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int    msgID   = MSGID_LDAP_FILTER_DECODE_SUBSTRING_TYPE;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    ArrayList<ASN1Element> subElements;
-    try
-    {
-      subElements = elements.get(1).decodeAsSequence().elements();
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int    msgID   = MSGID_LDAP_FILTER_DECODE_SUBSTRING_ELEMENTS;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    if (subElements.isEmpty())
-    {
-      int    msgID   = MSGID_LDAP_FILTER_DECODE_SUBSTRING_NO_SUBELEMENTS;
-      String message = getMessage(msgID);
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message);
-    }
-
-
-    ASN1OctetString subInitialElement = null;
-    ASN1OctetString subFinalElement   = null;
-    ArrayList<ASN1OctetString> subAnyElements = null;
-    try
-    {
-      for (ASN1Element e : subElements)
-      {
-        switch (e.getType())
-        {
-          case TYPE_SUBINITIAL:
-            subInitialElement = e.decodeAsOctetString();
-            break;
-          case TYPE_SUBFINAL:
-            subFinalElement = e.decodeAsOctetString();
-            break;
-          case TYPE_SUBANY:
-            if (subAnyElements == null)
-            {
-              subAnyElements = new ArrayList<ASN1OctetString>();
-            }
-
-            subAnyElements.add(e.decodeAsOctetString());
-            break;
-          default:
-            int    msgID   = MSGID_LDAP_FILTER_DECODE_SUBSTRING_INVALID_SUBTYPE;
-            String message = getMessage(msgID);
-            throw new LDAPException(PROTOCOL_ERROR, msgID, message);
-        }
-      }
-    }
-    catch (LDAPException le)
-    {
-      throw le;
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int    msgID   = MSGID_LDAP_FILTER_DECODE_SUBSTRING_VALUES;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    return new LDAPFilter(FilterType.SUBSTRING, null, null, attributeType, null,
-                          subInitialElement, subAnyElements, subFinalElement,
-                          null, false);
-  }
-
-
-
-  /**
-   * Decodes the provided ASN.1 element as a presence filter.
-   *
-   * @param  element  the ASN.1 element to decode.
-   *
-   * @return  The decoded LDAP search filter.
-   *
-   * @throws  LDAPException  If a problem occurs while trying to decode the
-   *                         provided ASN.1 element as an LDAP search filter.
-   */
-  private static LDAPFilter decodePresenceFilter(ASN1Element element)
-          throws LDAPException
-  {
-    String attributeType;
-    try
-    {
-      attributeType = element.decodeAsOctetString().stringValue();
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int    msgID   = MSGID_LDAP_FILTER_DECODE_PRESENCE_TYPE;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    return new LDAPFilter(FilterType.PRESENT, null, null, attributeType, null,
-                          null, null, null, null, false);
-  }
-
-
-
-  /**
-   * Decodes the provided ASN.1 element as an extensible match filter.
-   *
-   * @param  element  the ASN.1 element to decode.
-   *
-   * @return  The decoded LDAP search filter.
-   *
-   * @throws  LDAPException  If a problem occurs while trying to decode the
-   *                         provided ASN.1 element as an LDAP search filter.
-   */
-  private static LDAPFilter decodeExtensibleMatchFilter(ASN1Element element)
-          throws LDAPException
-  {
-    ArrayList<ASN1Element> elements;
-    try
-    {
-      elements = element.decodeAsSequence().elements();
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int    msgID   = MSGID_LDAP_FILTER_DECODE_EXTENSIBLE_SEQUENCE;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    ASN1OctetString assertionValue = null;
-    boolean         dnAttributes   = false;
-    String          attributeType  = null;
-    String          matchingRuleID = null;
-    try
-    {
-      for (ASN1Element e : elements)
-      {
-        switch (e.getType())
-        {
-          case TYPE_MATCHING_RULE_ID:
-            matchingRuleID = e.decodeAsOctetString().stringValue();
-            break;
-          case TYPE_MATCHING_RULE_TYPE:
-            attributeType = e.decodeAsOctetString().stringValue();
-            break;
-          case TYPE_MATCHING_RULE_VALUE:
-            assertionValue = e.decodeAsOctetString();
-            break;
-          case TYPE_MATCHING_RULE_DN_ATTRIBUTES:
-            dnAttributes = e.decodeAsBoolean().booleanValue();
-            break;
-          default:
-            int    msgID   = MSGID_LDAP_FILTER_DECODE_EXTENSIBLE_INVALID_TYPE;
-            String message = getMessage(msgID, e.getType());
-            throw new LDAPException(PROTOCOL_ERROR, msgID, message);
-        }
-      }
-    }
-    catch (LDAPException le)
-    {
-      throw le;
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int    msgID   = MSGID_LDAP_FILTER_DECODE_EXTENSIBLE_ELEMENTS;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    return new LDAPFilter(FilterType.EXTENSIBLE_MATCH, null, null,
-                          attributeType, assertionValue, null, null, null,
-                          matchingRuleID, dnAttributes);
-  }
-
-
-
-  /**
    * Converts this LDAP filter to a search filter that may be used by the
    * Directory Server's core processing.
    *
@@ -2735,7 +1892,7 @@
     else
     {
       subComps = new ArrayList<SearchFilter>(filterComponents.size());
-      for (LDAPFilter f : filterComponents)
+      for (RawFilter f : filterComponents)
       {
         subComps.add(f.toSearchFilter());
       }
@@ -2849,20 +2006,6 @@
 
 
   /**
-   * Retrieves a string representation of this search filter.
-   *
-   * @return  A string representation of this search filter.
-   */
-  public String toString()
-  {
-    StringBuilder buffer = new StringBuilder();
-    toString(buffer);
-    return buffer.toString();
-  }
-
-
-
-  /**
    * Appends a string representation of this search filter to the provided
    * buffer.
    *
@@ -2874,7 +2017,7 @@
     {
       case AND:
         buffer.append("(&");
-        for (LDAPFilter f : filterComponents)
+        for (RawFilter f : filterComponents)
         {
           f.toString(buffer);
         }
@@ -2882,7 +2025,7 @@
         break;
       case OR:
         buffer.append("(|");
-        for (LDAPFilter f : filterComponents)
+        for (RawFilter f : filterComponents)
         {
           f.toString(buffer);
         }
@@ -2912,7 +2055,7 @@
 
         if ((subAnyElements != null) && (! subAnyElements.isEmpty()))
         {
-          for (ASN1OctetString s : subAnyElements)
+          for (ByteString s : subAnyElements)
           {
             buffer.append("*");
             valueToFilterString(buffer, s);
@@ -2979,51 +2122,5 @@
         break;
     }
   }
-
-
-
-  /**
-   * Appends a properly-cleaned version of the provided value to the given
-   * buffer so that it can be safely used in string representations of this
-   * search filter.  The formatting changes that may be performed will be in
-   * compliance with the specification in RFC 2254.
-   *
-   * @param  buffer  The buffer to which the "safe" version of the value will be
-   *                 appended.
-   * @param  value   The value to be appended to the buffer.
-   */
-  public static void valueToFilterString(StringBuilder buffer,
-                                         ASN1OctetString value)
-  {
-    if (value == null)
-    {
-      return;
-    }
-
-
-    // Get the binary representation of the value and iterate through it to see
-    // if there are any unsafe characters.  If there are, then escape them and
-    // replace them with a two-digit hex equivalent.
-    byte[] valueBytes = value.value();
-    buffer.ensureCapacity(buffer.length() + valueBytes.length);
-    for (byte b : valueBytes)
-    {
-      if (((b & 0x7F) != b) ||  // Not 7-bit clean
-          (b <= 0x1F) ||        // Below the printable character range
-          (b == 0x28) ||        // Open parenthesis
-          (b == 0x29) ||        // Close parenthesis
-          (b == 0x2A) ||        // Asterisk
-          (b == 0x5C) ||        // Backslash
-          (b == 0x7F))          // Delete character
-      {
-        buffer.append("\\");
-        buffer.append(byteToHex(b));
-      }
-      else
-      {
-        buffer.append((char) b);
-      }
-    }
-  }
 }
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/LDAPMessage.java b/opends/src/server/org/opends/server/protocols/ldap/LDAPMessage.java
index 4333eb9..71c517a 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/LDAPMessage.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/LDAPMessage.java
@@ -35,10 +35,10 @@
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1Integer;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
+
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPResultCode.*;
@@ -53,9 +53,6 @@
 public class LDAPMessage
        implements ProtocolElement
 {
-
-
-
   // The set of controls for this LDAP message.
   private ArrayList<LDAPControl> controls;
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/LDAPModification.java b/opends/src/server/org/opends/server/protocols/ldap/LDAPModification.java
index a29cfbf..9621137 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/LDAPModification.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/LDAPModification.java
@@ -28,17 +28,12 @@
 
 
 
-import java.util.ArrayList;
-
-import org.opends.server.protocols.asn1.ASN1Element;
-import org.opends.server.protocols.asn1.ASN1Enumerated;
-import org.opends.server.protocols.asn1.ASN1Sequence;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.Modification;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.RawAttribute;
+import org.opends.server.types.RawModification;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
-import org.opends.server.types.DebugLogLevel;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -53,16 +48,14 @@
  * attribute.
  */
 public class LDAPModification
+       extends RawModification
 {
-
-
-
-  // The attribute for this modification.
-  private LDAPAttribute attribute;
-
   // The modification type for this modification.
   private ModificationType modificationType;
 
+  // The attribute for this modification.
+  private RawAttribute attribute;
+
 
 
   /**
@@ -72,7 +65,7 @@
    * @param  attribute         The attribute for this modification.
    */
   public LDAPModification(ModificationType modificationType,
-                          LDAPAttribute attribute)
+                          RawAttribute attribute)
   {
     this.modificationType = modificationType;
     this.attribute        = attribute;
@@ -109,7 +102,7 @@
    *
    * @return  The attribute for this modification.
    */
-  public LDAPAttribute getAttribute()
+  public RawAttribute getAttribute()
   {
     return attribute;
   }
@@ -121,7 +114,7 @@
    *
    * @param  attribute  The attribute for this modification.
    */
-  public void setAttribute(LDAPAttribute attribute)
+  public void setAttribute(RawAttribute attribute)
   {
     this.attribute = attribute;
   }
@@ -129,126 +122,6 @@
 
 
   /**
-   * Encodes this modification to an ASN.1 element.
-   *
-   * @return  The ASN.1 element containing the encoded modification.
-   */
-  public ASN1Element encode()
-  {
-    ArrayList<ASN1Element> elements = new ArrayList<ASN1Element>(2);
-    elements.add(new ASN1Enumerated(modificationType.intValue()));
-    elements.add(attribute.encode());
-
-    return new ASN1Sequence(elements);
-  }
-
-
-
-  /**
-   * Decodes the provided ASN.1 element as an LDAP modification.
-   *
-   * @param  element  The ASN.1 element to decode.
-   *
-   * @return  The decoded LDAP modification.
-   *
-   * @throws  LDAPException  If a problem occurs while attempting to decode the
-   *                         provided ASN.1 element as an LDAP modification.
-   */
-  public static LDAPModification decode(ASN1Element element)
-         throws LDAPException
-  {
-    ArrayList<ASN1Element> elements;
-    try
-    {
-      elements = element.decodeAsSequence().elements();
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int msgID = MSGID_LDAP_MODIFICATION_DECODE_SEQUENCE;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    int numElements = elements.size();
-    if (numElements != 2)
-    {
-      int    msgID   = MSGID_LDAP_MODIFICATION_DECODE_INVALID_ELEMENT_COUNT;
-      String message = getMessage(msgID, numElements);
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message);
-    }
-
-
-    ModificationType modificationType;
-    try
-    {
-      switch (elements.get(0).decodeAsEnumerated().intValue())
-      {
-        case MOD_TYPE_ADD:
-          modificationType = ModificationType.ADD;
-          break;
-        case MOD_TYPE_DELETE:
-          modificationType = ModificationType.DELETE;
-          break;
-        case MOD_TYPE_REPLACE:
-          modificationType = ModificationType.REPLACE;
-          break;
-        case MOD_TYPE_INCREMENT:
-          modificationType = ModificationType.INCREMENT;
-          break;
-        default:
-          int    intValue = elements.get(0).decodeAsEnumerated().intValue();
-          int    msgID    = MSGID_LDAP_MODIFICATION_DECODE_INVALID_MOD_TYPE;
-          String message  = getMessage(msgID, intValue);
-          throw new LDAPException(PROTOCOL_ERROR, msgID, message);
-      }
-    }
-    catch (LDAPException le)
-    {
-      throw le;
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int msgID = MSGID_LDAP_MODIFICATION_DECODE_MOD_TYPE;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    LDAPAttribute attribute;
-    try
-    {
-      attribute = LDAPAttribute.decode(elements.get(1));
-    }
-    catch (Exception e)
-    {
-      if (debugEnabled())
-      {
-        debugCaught(DebugLogLevel.ERROR, e);
-      }
-
-      int msgID = MSGID_LDAP_MODIFICATION_DECODE_ATTR;
-      String message = getMessage(msgID, String.valueOf(e));
-      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
-    }
-
-
-    return new LDAPModification(modificationType, attribute);
-  }
-
-
-
-  /**
    * Creates a new core <CODE>Modification</CODE> object from this LDAP
    * modification.
    *
diff --git a/opends/src/server/org/opends/server/protocols/ldap/LDAPRequestHandler.java b/opends/src/server/org/opends/server/protocols/ldap/LDAPRequestHandler.java
index 70a9b39..a2cb596 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/LDAPRequestHandler.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/LDAPRequestHandler.java
@@ -279,7 +279,7 @@
             // thread to die.  Log a severe error.
             int    msgID   = MSGID_LDAP_REQHANDLER_UNEXPECTED_SELECT_EXCEPTION;
             String message = getMessage(msgID, getName(),
-                                        stackTraceToSingleLineString(e));
+                                        getExceptionMessage(e));
             logError(ErrorLogCategory.REQUEST_HANDLING,
                      ErrorLogSeverity.SEVERE_ERROR, message, msgID);
           }
diff --git a/opends/src/server/org/opends/server/protocols/ldap/ModifyDNRequestProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/ModifyDNRequestProtocolOp.java
index 3cc2e20..6afd06c 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/ModifyDNRequestProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/ModifyDNRequestProtocolOp.java
@@ -34,10 +34,10 @@
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
+
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -53,9 +53,6 @@
 public class ModifyDNRequestProtocolOp
        extends ProtocolOp
 {
-
-
-
   // The current entry DN for this modify DN request.
   private ASN1OctetString entryDN;
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/ModifyDNResponseProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/ModifyDNResponseProtocolOp.java
index cf5b5fd..6f5774b 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/ModifyDNResponseProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/ModifyDNResponseProtocolOp.java
@@ -36,11 +36,11 @@
 import org.opends.server.protocols.asn1.ASN1Enumerated;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.types.DN;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.DN;
+import org.opends.server.types.LDAPException;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -57,9 +57,6 @@
 public class ModifyDNResponseProtocolOp
        extends ProtocolOp
 {
-
-
-
   // The matched DN for this response.
   private DN matchedDN;
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/ModifyRequestProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/ModifyRequestProtocolOp.java
index b192e91..82bf3c7 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/ModifyRequestProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/ModifyRequestProtocolOp.java
@@ -34,10 +34,11 @@
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
+import org.opends.server.types.RawModification;
+
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -53,11 +54,8 @@
 public class ModifyRequestProtocolOp
        extends ProtocolOp
 {
-
-
-
   // The set of modifications for this modify request.
-  private ArrayList<LDAPModification> modifications;
+  private ArrayList<RawModification> modifications;
 
   // The DN for this modify request.
   private ASN1OctetString dn;
@@ -73,7 +71,7 @@
   public ModifyRequestProtocolOp(ASN1OctetString dn)
   {
     this.dn            = dn;
-    this.modifications = new ArrayList<LDAPModification>();
+    this.modifications = new ArrayList<RawModification>();
   }
 
 
@@ -86,13 +84,13 @@
    * @param  modifications  The set of modifications for this modify request.
    */
   public ModifyRequestProtocolOp(ASN1OctetString dn,
-                                 ArrayList<LDAPModification> modifications)
+                                 ArrayList<RawModification> modifications)
   {
     this.dn = dn;
 
     if (modifications == null)
     {
-      this.modifications = new ArrayList<LDAPModification>();
+      this.modifications = new ArrayList<RawModification>();
     }
     else
     {
@@ -132,7 +130,7 @@
    *
    * @return  The set of modifications for this modify request.
    */
-  public ArrayList<LDAPModification> getModifications()
+  public ArrayList<RawModification> getModifications()
   {
     return modifications;
   }
@@ -177,7 +175,7 @@
 
     ArrayList<ASN1Element> modElements =
          new ArrayList<ASN1Element>(modifications.size());
-    for (LDAPModification mod : modifications)
+    for (RawModification mod : modifications)
     {
       modElements.add(mod.encode());
     }
@@ -249,12 +247,12 @@
 
 
 
-    ArrayList<LDAPModification> modifications;
+    ArrayList<RawModification> modifications;
     try
     {
       ArrayList<ASN1Element> modElements =
            elements.get(1).decodeAsSequence().elements();
-      modifications = new ArrayList<LDAPModification>(modElements.size());
+      modifications = new ArrayList<RawModification>(modElements.size());
       for (ASN1Element e : modElements)
       {
         modifications.add(LDAPModification.decode(e));
@@ -292,7 +290,7 @@
 
     if (! modifications.isEmpty())
     {
-      Iterator<LDAPModification> iterator = modifications.iterator();
+      Iterator<RawModification> iterator = modifications.iterator();
       iterator.next().toString(buffer);
 
       while (iterator.hasNext())
@@ -335,7 +333,7 @@
     buffer.append("  Modifications:");
     buffer.append(EOL);
 
-    for (LDAPModification mod : modifications)
+    for (RawModification mod : modifications)
     {
       mod.toString(buffer, indent+4);
     }
diff --git a/opends/src/server/org/opends/server/protocols/ldap/ModifyResponseProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/ModifyResponseProtocolOp.java
index 44b4f40..2482fe1 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/ModifyResponseProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/ModifyResponseProtocolOp.java
@@ -36,11 +36,11 @@
 import org.opends.server.protocols.asn1.ASN1Enumerated;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.types.DN;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.DN;
+import org.opends.server.types.LDAPException;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -57,9 +57,6 @@
 public class ModifyResponseProtocolOp
        extends ProtocolOp
 {
-
-
-
   // The matched DN for this response.
   private DN matchedDN;
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/ProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/ProtocolOp.java
index 1dda58e..071a062 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/ProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/ProtocolOp.java
@@ -29,6 +29,7 @@
 
 
 import org.opends.server.protocols.asn1.ASN1Element;
+import org.opends.server.types.LDAPException;
 
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
@@ -43,9 +44,6 @@
  */
 public abstract class ProtocolOp
 {
-
-
-
   /**
    * Retrieves the BER type for this protocol op.
    *
diff --git a/opends/src/server/org/opends/server/protocols/ldap/SearchRequestProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/SearchRequestProtocolOp.java
index 7f61dd9..2b16096 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/SearchRequestProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/SearchRequestProtocolOp.java
@@ -38,12 +38,12 @@
 import org.opends.server.protocols.asn1.ASN1Integer;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.types.DereferencePolicy;
-import org.opends.server.types.SearchScope;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.DereferencePolicy;
+import org.opends.server.types.LDAPException;
+import org.opends.server.types.SearchScope;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -59,9 +59,6 @@
 public class SearchRequestProtocolOp
        extends ProtocolOp
 {
-
-
-
   // The typesOnly flag for this search request.
   private boolean typesOnly;
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/SearchResultDoneProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/SearchResultDoneProtocolOp.java
index 7494273..8bf5c71 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/SearchResultDoneProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/SearchResultDoneProtocolOp.java
@@ -36,11 +36,11 @@
 import org.opends.server.protocols.asn1.ASN1Enumerated;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.types.DN;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.DN;
+import org.opends.server.types.LDAPException;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -57,9 +57,6 @@
 public class SearchResultDoneProtocolOp
        extends ProtocolOp
 {
-
-
-
   // The matched DN for this response.
   private DN matchedDN;
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/SearchResultEntryProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/SearchResultEntryProtocolOp.java
index d1a131f..270525c 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/SearchResultEntryProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/SearchResultEntryProtocolOp.java
@@ -42,15 +42,15 @@
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
+import org.opends.server.types.DebugLogLevel;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.ObjectClass;
 import org.opends.server.types.SearchResultEntry;
 import org.opends.server.util.Base64;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
-import org.opends.server.types.DebugLogLevel;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -68,9 +68,6 @@
 public class SearchResultEntryProtocolOp
        extends ProtocolOp
 {
-
-
-
   // The set of attributes for this search entry.
   private LinkedList<LDAPAttribute> attributes;
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/SearchResultReferenceProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/SearchResultReferenceProtocolOp.java
index f1bb060..8b68318 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/SearchResultReferenceProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/SearchResultReferenceProtocolOp.java
@@ -37,9 +37,9 @@
 import org.opends.server.protocols.asn1.ASN1Sequence;
 import org.opends.server.types.SearchResultReference;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
@@ -56,9 +56,6 @@
 public class SearchResultReferenceProtocolOp
        extends ProtocolOp
 {
-
-
-
   // The set of referral URLs for this search result reference.
   private List<String> referralURLs;
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/UnbindRequestProtocolOp.java b/opends/src/server/org/opends/server/protocols/ldap/UnbindRequestProtocolOp.java
index cfe4b25..cd32fd7 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/UnbindRequestProtocolOp.java
+++ b/opends/src/server/org/opends/server/protocols/ldap/UnbindRequestProtocolOp.java
@@ -30,15 +30,18 @@
 
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1Null;
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
+
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ProtocolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
 import static org.opends.server.protocols.ldap.LDAPResultCode.*;
 import static org.opends.server.util.ServerConstants.*;
 
+
+
 /**
  * This class defines the structures and methods for an LDAP unbind request
  * protocol op, which is used to indicate that the client wishes to disconnect
@@ -47,9 +50,6 @@
 public class UnbindRequestProtocolOp
        extends ProtocolOp
 {
-
-
-
   /**
    * Creates a new LDAP unbind request protocol op.
    */
diff --git a/opends/src/server/org/opends/server/schema/DirectoryStringSyntax.java b/opends/src/server/org/opends/server/schema/DirectoryStringSyntax.java
index 4bdfa40..2ea9e80 100644
--- a/opends/src/server/org/opends/server/schema/DirectoryStringSyntax.java
+++ b/opends/src/server/org/opends/server/schema/DirectoryStringSyntax.java
@@ -215,7 +215,7 @@
 
       msgID = MSGID_ATTR_SYNTAX_DIRECTORYSTRING_CANNOT_DETERMINE_ZEROLENGTH;
       String message = getMessage(msgID, ATTR_ALLOW_ZEROLENGTH_DIRECTORYSTRINGS,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.SCHEMA, ErrorLogSeverity.SEVERE_WARNING,
                message, msgID);
     }
@@ -456,7 +456,7 @@
       msgID = MSGID_ATTR_SYNTAX_DIRECTORYSTRING_CANNOT_DETERMINE_ZEROLENGTH;
       unacceptableReasons.add(getMessage(msgID,
                                          ATTR_ALLOW_ZEROLENGTH_DIRECTORYSTRINGS,
-                                         stackTraceToSingleLineString(e)));
+                                         getExceptionMessage(e)));
     }
 
 
@@ -515,7 +515,7 @@
 
       msgID = MSGID_ATTR_SYNTAX_DIRECTORYSTRING_CANNOT_DETERMINE_ZEROLENGTH;
       messages.add(getMessage(msgID, ATTR_ALLOW_ZEROLENGTH_DIRECTORYSTRINGS,
-                              stackTraceToSingleLineString(e)));
+                              getExceptionMessage(e)));
     }
 
     if (resultCode == ResultCode.SUCCESS)
diff --git a/opends/src/server/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java b/opends/src/server/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java
index 8ade984..38e3d56 100644
--- a/opends/src/server/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java
+++ b/opends/src/server/org/opends/server/schema/LDAPSyntaxDescriptionSyntax.java
@@ -420,7 +420,7 @@
 
       int msgID = MSGID_ATTR_SYNTAX_ATTRSYNTAX_CANNOT_READ_DESC_TOKEN;
       invalidReason.append(getMessage(msgID, valueStr, pos,
-                                      stackTraceToSingleLineString(e)));
+                                      getExceptionMessage(e)));
       return false;
     }
 
@@ -447,7 +447,7 @@
 
       int msgID = MSGID_ATTR_SYNTAX_ATTRSYNTAX_CANNOT_READ_DESC_VALUE;
       invalidReason.append(getMessage(msgID, valueStr, pos,
-                                      stackTraceToSingleLineString(e)));
+                                      getExceptionMessage(e)));
       return false;
     }
     //Check if we have a RFC 4512 style extension.
@@ -461,8 +461,7 @@
             debugCaught(DebugLogLevel.ERROR, e);
           }
             int msgID = MSGID_ATTR_SYNTAX_ATTRSYNTAX_INVALID_EXTENSION;
-            invalidReason.append(getMessage(msgID,
-                    stackTraceToSingleLineString(e)));
+            invalidReason.append(getMessage(msgID, getExceptionMessage(e)));
             return false;
         }
     }
diff --git a/opends/src/server/org/opends/server/schema/NameAndOptionalUIDSyntax.java b/opends/src/server/org/opends/server/schema/NameAndOptionalUIDSyntax.java
index 20a3f02..ba8b15e 100644
--- a/opends/src/server/org/opends/server/schema/NameAndOptionalUIDSyntax.java
+++ b/opends/src/server/org/opends/server/schema/NameAndOptionalUIDSyntax.java
@@ -266,7 +266,7 @@
       // acceptable.
       int msgID = MSGID_ATTR_SYNTAX_NAMEANDUID_INVALID_DN;
       invalidReason.append(getMessage(msgID, valueString,
-                                      stackTraceToSingleLineString(e)));
+                                      getExceptionMessage(e)));
       return false;
     }
 
diff --git a/opends/src/server/org/opends/server/schema/TelephoneNumberSyntax.java b/opends/src/server/org/opends/server/schema/TelephoneNumberSyntax.java
index b46a944..d0ddbca 100644
--- a/opends/src/server/org/opends/server/schema/TelephoneNumberSyntax.java
+++ b/opends/src/server/org/opends/server/schema/TelephoneNumberSyntax.java
@@ -170,7 +170,7 @@
 
         msgID = MSGID_ATTR_SYNTAX_TELEPHONE_CANNOT_DETERMINE_STRICT_MODE;
         String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.CONFIGURATION, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
       }
@@ -482,7 +482,7 @@
 
       msgID = MSGID_ATTR_SYNTAX_TELEPHONE_CANNOT_DETERMINE_STRICT_MODE;
       String message = getMessage(msgID, String.valueOf(configEntryDN),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       unacceptableReasons.add(message);
       configIsAcceptable = false;
     }
@@ -550,7 +550,7 @@
 
       msgID = MSGID_ATTR_SYNTAX_TELEPHONE_CANNOT_DETERMINE_STRICT_MODE;
       messages.add(getMessage(msgID, String.valueOf(configEntryDN),
-                              stackTraceToSingleLineString(e)));
+                              getExceptionMessage(e)));
       resultCode = DirectoryServer.getServerErrorResultCode();
 
       newStrictMode = false;
diff --git a/opends/src/server/org/opends/server/schema/UniqueMemberEqualityMatchingRule.java b/opends/src/server/org/opends/server/schema/UniqueMemberEqualityMatchingRule.java
index 4554df1..b5d6dc9 100644
--- a/opends/src/server/org/opends/server/schema/UniqueMemberEqualityMatchingRule.java
+++ b/opends/src/server/org/opends/server/schema/UniqueMemberEqualityMatchingRule.java
@@ -202,8 +202,7 @@
       // strict syntax enforcement, then throw an exception.  Otherwise, log a
       // message and just try our best.
       int msgID = MSGID_ATTR_SYNTAX_NAMEANDUID_INVALID_DN;
-      String message = getMessage(msgID, valueString,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, valueString, getExceptionMessage(e));
 
       switch (DirectoryServer.getSyntaxEnforcementPolicy())
       {
diff --git a/opends/src/server/org/opends/server/synchronization/changelog/Changelog.java b/opends/src/server/org/opends/server/synchronization/changelog/Changelog.java
index e813bd6..221d232 100644
--- a/opends/src/server/org/opends/server/synchronization/changelog/Changelog.java
+++ b/opends/src/server/org/opends/server/synchronization/changelog/Changelog.java
@@ -28,7 +28,7 @@
 
 import static org.opends.server.loggers.Error.logError;
 import static org.opends.server.messages.MessageHandler.getMessage;
-import static org.opends.server.synchronization.common.LogMessages.*;
+import static org.opends.server.messages.SynchronizationMessages.*;
 import static org.opends.server.util.ServerConstants.*;
 import static org.opends.server.util.StaticUtils.getFileForPath;
 
diff --git a/opends/src/server/org/opends/server/synchronization/changelog/ChangelogCache.java b/opends/src/server/org/opends/server/synchronization/changelog/ChangelogCache.java
index 51f099e..81cb38f 100644
--- a/opends/src/server/org/opends/server/synchronization/changelog/ChangelogCache.java
+++ b/opends/src/server/org/opends/server/synchronization/changelog/ChangelogCache.java
@@ -28,7 +28,7 @@
 
 import static org.opends.server.loggers.Error.logError;
 import static org.opends.server.messages.MessageHandler.getMessage;
-import static org.opends.server.synchronization.common.LogMessages.*;
+import static org.opends.server.messages.SynchronizationMessages.*;
 import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
 
 import java.io.IOException;
diff --git a/opends/src/server/org/opends/server/synchronization/changelog/ChangelogDB.java b/opends/src/server/org/opends/server/synchronization/changelog/ChangelogDB.java
index d443ddb..2b6ba03 100644
--- a/opends/src/server/org/opends/server/synchronization/changelog/ChangelogDB.java
+++ b/opends/src/server/org/opends/server/synchronization/changelog/ChangelogDB.java
@@ -28,7 +28,7 @@
 
 import static org.opends.server.loggers.Error.logError;
 import static org.opends.server.messages.MessageHandler.getMessage;
-import static org.opends.server.synchronization.common.LogMessages.*;
+import static org.opends.server.messages.SynchronizationMessages.*;
 import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
 
 import java.util.List;
diff --git a/opends/src/server/org/opends/server/synchronization/changelog/ChangelogDbEnv.java b/opends/src/server/org/opends/server/synchronization/changelog/ChangelogDbEnv.java
index 940017c..fd6383e 100644
--- a/opends/src/server/org/opends/server/synchronization/changelog/ChangelogDbEnv.java
+++ b/opends/src/server/org/opends/server/synchronization/changelog/ChangelogDbEnv.java
@@ -28,7 +28,7 @@
 
 import static org.opends.server.loggers.Error.logError;
 import static org.opends.server.messages.MessageHandler.getMessage;
-import static org.opends.server.synchronization.common.LogMessages.*;
+import static org.opends.server.messages.SynchronizationMessages.*;
 import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
 
 import java.io.File;
diff --git a/opends/src/server/org/opends/server/synchronization/changelog/DbHandler.java b/opends/src/server/org/opends/server/synchronization/changelog/DbHandler.java
index 8f55352..901b611 100644
--- a/opends/src/server/org/opends/server/synchronization/changelog/DbHandler.java
+++ b/opends/src/server/org/opends/server/synchronization/changelog/DbHandler.java
@@ -28,7 +28,7 @@
 
 import static org.opends.server.loggers.Error.logError;
 import static org.opends.server.messages.MessageHandler.getMessage;
-import static org.opends.server.synchronization.common.LogMessages.*;
+import static org.opends.server.messages.SynchronizationMessages.*;
 import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
 
 import java.util.ArrayList;
diff --git a/opends/src/server/org/opends/server/synchronization/changelog/ServerHandler.java b/opends/src/server/org/opends/server/synchronization/changelog/ServerHandler.java
index a4e1ae8..23312cb 100644
--- a/opends/src/server/org/opends/server/synchronization/changelog/ServerHandler.java
+++ b/opends/src/server/org/opends/server/synchronization/changelog/ServerHandler.java
@@ -30,7 +30,7 @@
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import static org.opends.server.loggers.debug.DebugLogger.debugInfo;
 import static org.opends.server.messages.MessageHandler.getMessage;
-import static org.opends.server.synchronization.common.LogMessages.*;
+import static org.opends.server.messages.SynchronizationMessages.*;
 import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
 
 import java.io.IOException;
diff --git a/opends/src/server/org/opends/server/synchronization/changelog/ServerReader.java b/opends/src/server/org/opends/server/synchronization/changelog/ServerReader.java
index 2dc7a75..2f6f620 100644
--- a/opends/src/server/org/opends/server/synchronization/changelog/ServerReader.java
+++ b/opends/src/server/org/opends/server/synchronization/changelog/ServerReader.java
@@ -28,7 +28,7 @@
 
 import static org.opends.server.loggers.Error.logError;
 import static org.opends.server.messages.MessageHandler.getMessage;
-import static org.opends.server.synchronization.common.LogMessages.*;
+import static org.opends.server.messages.SynchronizationMessages.*;
 
 import java.io.IOException;
 
diff --git a/opends/src/server/org/opends/server/synchronization/changelog/ServerWriter.java b/opends/src/server/org/opends/server/synchronization/changelog/ServerWriter.java
index c2301e6..f2951de 100644
--- a/opends/src/server/org/opends/server/synchronization/changelog/ServerWriter.java
+++ b/opends/src/server/org/opends/server/synchronization/changelog/ServerWriter.java
@@ -28,7 +28,7 @@
 
 import static org.opends.server.loggers.Error.logError;
 import static org.opends.server.messages.MessageHandler.getMessage;
-import static org.opends.server.synchronization.common.LogMessages.*;
+import static org.opends.server.messages.SynchronizationMessages.*;
 
 import java.io.IOException;
 import java.net.SocketException;
diff --git a/opends/src/server/org/opends/server/synchronization/plugin/ChangelogBroker.java b/opends/src/server/org/opends/server/synchronization/plugin/ChangelogBroker.java
index 674d94a..b1d1036 100644
--- a/opends/src/server/org/opends/server/synchronization/plugin/ChangelogBroker.java
+++ b/opends/src/server/org/opends/server/synchronization/plugin/ChangelogBroker.java
@@ -30,7 +30,7 @@
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import static org.opends.server.loggers.debug.DebugLogger.debugInfo;
 import static org.opends.server.messages.MessageHandler.getMessage;
-import static org.opends.server.synchronization.common.LogMessages.*;
+import static org.opends.server.messages.SynchronizationMessages.*;
 import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
 
 import java.util.Collection;
diff --git a/opends/src/server/org/opends/server/synchronization/plugin/ListenerThread.java b/opends/src/server/org/opends/server/synchronization/plugin/ListenerThread.java
index e466ddc..ca55624 100644
--- a/opends/src/server/org/opends/server/synchronization/plugin/ListenerThread.java
+++ b/opends/src/server/org/opends/server/synchronization/plugin/ListenerThread.java
@@ -28,7 +28,7 @@
 
 import static org.opends.server.loggers.Error.logError;
 import static org.opends.server.messages.MessageHandler.getMessage;
-import static org.opends.server.synchronization.common.LogMessages.*;
+import static org.opends.server.messages.SynchronizationMessages.*;
 import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
 
 import org.opends.server.api.DirectoryThread;
diff --git a/opends/src/server/org/opends/server/synchronization/plugin/MultimasterSynchronization.java b/opends/src/server/org/opends/server/synchronization/plugin/MultimasterSynchronization.java
index 0637e48..da57868 100644
--- a/opends/src/server/org/opends/server/synchronization/plugin/MultimasterSynchronization.java
+++ b/opends/src/server/org/opends/server/synchronization/plugin/MultimasterSynchronization.java
@@ -26,8 +26,6 @@
  */
 package org.opends.server.synchronization.plugin;
 
-import static org.opends.server.synchronization.common.LogMessages.HISTORICAL;
-
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -48,8 +46,6 @@
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ModifyDNOperation;
 import org.opends.server.core.ModifyOperation;
-import org.opends.server.core.Operation;
-import org.opends.server.synchronization.common.LogMessages;
 import org.opends.server.types.BackupConfig;
 import org.opends.server.types.ConfigChangeResult;
 import org.opends.server.types.DN;
@@ -58,10 +54,13 @@
 import org.opends.server.types.LDIFExportConfig;
 import org.opends.server.types.LDIFImportConfig;
 import org.opends.server.types.Modification;
+import org.opends.server.types.Operation;
 import org.opends.server.types.RestoreConfig;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SynchronizationProviderResult;
 
+import static org.opends.server.messages.SynchronizationMessages.*;
+
 /**
  * This class is used to load the Synchronization code inside the JVM
  * and to trigger initialization of the synchronization.
@@ -95,8 +94,6 @@
       MultimasterSynchronizationProviderCfg configuration)
   throws ConfigException
   {
-    LogMessages.registerMessages();
-
     changelog = new ChangelogListener(configuration);
 
     // Register as an add and delete listener with the root configuration so we
diff --git a/opends/src/server/org/opends/server/synchronization/plugin/PendingChange.java b/opends/src/server/org/opends/server/synchronization/plugin/PendingChange.java
index acbecc0..001da1b 100644
--- a/opends/src/server/org/opends/server/synchronization/plugin/PendingChange.java
+++ b/opends/src/server/org/opends/server/synchronization/plugin/PendingChange.java
@@ -26,9 +26,9 @@
  */
 package org.opends.server.synchronization.plugin;
 
-import org.opends.server.core.Operation;
 import org.opends.server.synchronization.common.ChangeNumber;
 import org.opends.server.synchronization.protocol.UpdateMessage;
+import org.opends.server.types.Operation;
 
 /**
  * This class is use to store the list of operations currently
diff --git a/opends/src/server/org/opends/server/synchronization/plugin/PersistentServerState.java b/opends/src/server/org/opends/server/synchronization/plugin/PersistentServerState.java
index 1753d0e..a37adff 100644
--- a/opends/src/server/org/opends/server/synchronization/plugin/PersistentServerState.java
+++ b/opends/src/server/org/opends/server/synchronization/plugin/PersistentServerState.java
@@ -28,7 +28,7 @@
 
 import static org.opends.server.loggers.Error.logError;
 import static org.opends.server.messages.MessageHandler.getMessage;
-import static org.opends.server.synchronization.common.LogMessages.*;
+import static org.opends.server.messages.SynchronizationMessages.*;
 
 import java.util.ArrayList;
 import java.util.LinkedHashSet;
@@ -41,7 +41,6 @@
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.internal.InternalSearchOperation;
 import org.opends.server.protocols.ldap.LDAPAttribute;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.protocols.ldap.LDAPModification;
 import org.opends.server.synchronization.common.ChangeNumber;
@@ -54,7 +53,9 @@
 import org.opends.server.types.DereferencePolicy;
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.RawModification;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchResultEntry;
 import org.opends.server.types.SearchScope;
@@ -214,7 +215,7 @@
     LDAPAttribute attr =
       new LDAPAttribute(SYNCHRONIZATION_STATE, values);
     LDAPModification mod = new LDAPModification(ModificationType.REPLACE, attr);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>(1);
+    ArrayList<RawModification> mods = new ArrayList<RawModification>(1);
     mods.add(mod);
 
     ModifyOperation op =
diff --git a/opends/src/server/org/opends/server/synchronization/plugin/SynchronizationDomain.java b/opends/src/server/org/opends/server/synchronization/plugin/SynchronizationDomain.java
index 860b456..b8fd131 100644
--- a/opends/src/server/org/opends/server/synchronization/plugin/SynchronizationDomain.java
+++ b/opends/src/server/org/opends/server/synchronization/plugin/SynchronizationDomain.java
@@ -36,7 +36,7 @@
 import static org.opends.server.messages.ConfigMessages.*;
 import static org.opends.server.messages.MessageHandler.getMessage;
 import static org.opends.server.messages.ToolMessages.*;
-import static org.opends.server.synchronization.common.LogMessages.*;
+import static org.opends.server.messages.SynchronizationMessages.*;
 import static org.opends.server.synchronization.plugin.Historical.ENTRYUIDNAME;
 import static org.opends.server.synchronization.protocol.OperationContext.*;
 import static org.opends.server.util.StaticUtils.createEntry;
@@ -73,14 +73,11 @@
 import org.opends.server.core.LockFileManager;
 import org.opends.server.core.ModifyDNOperation;
 import org.opends.server.core.ModifyOperation;
-import org.opends.server.core.Operation;
 import org.opends.server.protocols.asn1.ASN1Exception;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.internal.InternalSearchOperation;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.synchronization.common.ChangeNumber;
 import org.opends.server.synchronization.common.ChangeNumberGenerator;
-import org.opends.server.synchronization.common.LogMessages;
 import org.opends.server.synchronization.common.ServerState;
 import org.opends.server.synchronization.protocol.AckMessage;
 import org.opends.server.synchronization.protocol.AddContext;
@@ -107,9 +104,11 @@
 import org.opends.server.types.Entry;
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.LDIFExportConfig;
 import org.opends.server.types.LDIFImportConfig;
 import org.opends.server.types.Modification;
+import org.opends.server.types.Operation;
 import org.opends.server.types.RDN;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchFilter;
@@ -2698,7 +2697,7 @@
     {
       if (!( provider instanceof MultimasterSynchronization))
       {
-        int msgID = LogMessages.MSGID_INVALID_PROVIDER;
+        int msgID = MSGID_INVALID_PROVIDER;
         String message = getMessage(msgID);
         throw new DirectoryException(ResultCode.OTHER,
             message, msgID);
@@ -2709,7 +2708,7 @@
         MultimasterSynchronization.findDomain(baseDN, null);
       if (sdomain == null)
       {
-        int msgID = LogMessages.MSGID_NO_MATCHING_DOMAIN;
+        int msgID = MSGID_NO_MATCHING_DOMAIN;
         String message = getMessage(msgID) + " " + baseDN;
         throw new DirectoryException(ResultCode.OTHER,
             message, msgID);
@@ -2718,7 +2717,7 @@
       if (synchronizationDomain != null)
       {
         // Should never happen
-        int msgID = LogMessages.MSGID_MULTIPLE_MATCHING_DOMAIN;
+        int msgID = MSGID_MULTIPLE_MATCHING_DOMAIN;
         String message = getMessage(msgID);
         throw new DirectoryException(ResultCode.OTHER,
             message, msgID);
diff --git a/opends/src/server/org/opends/server/synchronization/protocol/AddMsg.java b/opends/src/server/org/opends/server/synchronization/protocol/AddMsg.java
index 5d50687..754f067 100644
--- a/opends/src/server/org/opends/server/synchronization/protocol/AddMsg.java
+++ b/opends/src/server/org/opends/server/synchronization/protocol/AddMsg.java
@@ -41,10 +41,11 @@
 
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.ldap.LDAPAttribute;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.synchronization.common.ChangeNumber;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeValue;
+import org.opends.server.types.LDAPException;
+import org.opends.server.types.RawAttribute;
 
 import static org.opends.server.synchronization.protocol.OperationContext.*;
 import static org.opends.server.util.StaticUtils.toLowerCase;
@@ -188,7 +189,7 @@
                                       String newDn)
                       throws LDAPException, ASN1Exception
   {
-    ArrayList<LDAPAttribute> attr = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attr = new ArrayList<RawAttribute>();
     ArrayList<ASN1Element> elems;
 
     elems = ASN1Element.decodeElements(encodedAttributes);
diff --git a/opends/src/server/org/opends/server/synchronization/protocol/DeleteMsg.java b/opends/src/server/org/opends/server/synchronization/protocol/DeleteMsg.java
index 259ef9c..d40b233 100644
--- a/opends/src/server/org/opends/server/synchronization/protocol/DeleteMsg.java
+++ b/opends/src/server/org/opends/server/synchronization/protocol/DeleteMsg.java
@@ -32,10 +32,10 @@
 import java.util.zip.DataFormatException;
 
 import org.opends.server.core.DeleteOperation;
-import org.opends.server.core.Operation;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.synchronization.common.ChangeNumber;
+import org.opends.server.types.Operation;
 
 /**
  * Object used when sending delete information to Changelogs.
diff --git a/opends/src/server/org/opends/server/synchronization/protocol/ModifyDNMsg.java b/opends/src/server/org/opends/server/synchronization/protocol/ModifyDNMsg.java
index 39a3b4e..f7e7c4b 100644
--- a/opends/src/server/org/opends/server/synchronization/protocol/ModifyDNMsg.java
+++ b/opends/src/server/org/opends/server/synchronization/protocol/ModifyDNMsg.java
@@ -32,10 +32,10 @@
 import java.util.zip.DataFormatException;
 
 import org.opends.server.core.ModifyDNOperation;
-import org.opends.server.core.Operation;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.synchronization.common.ChangeNumber;
+import org.opends.server.types.Operation;
 
 /**
  * Message used to send Modify DN information.
diff --git a/opends/src/server/org/opends/server/synchronization/protocol/ModifyMsg.java b/opends/src/server/org/opends/server/synchronization/protocol/ModifyMsg.java
index 2a6b7f2..7d33d45 100644
--- a/opends/src/server/org/opends/server/synchronization/protocol/ModifyMsg.java
+++ b/opends/src/server/org/opends/server/synchronization/protocol/ModifyMsg.java
@@ -29,11 +29,9 @@
 import static org.opends.server.synchronization.protocol.OperationContext.*;
 
 import org.opends.server.core.ModifyOperation;
-import org.opends.server.core.Operation;
 import org.opends.server.protocols.asn1.ASN1Exception;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.ldap.LDAPAttribute;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPModification;
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.internal.InternalClientConnection;
@@ -43,7 +41,10 @@
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeUsage;
 import org.opends.server.types.DN;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.Modification;
+import org.opends.server.types.Operation;
+import org.opends.server.types.RawModification;
 
 
 import java.io.UnsupportedEncodingException;
@@ -141,13 +142,13 @@
     if (newDn == null)
       newDn = getDn();
 
-    ArrayList<LDAPModification> ldapmods;
+    ArrayList<RawModification> ldapmods;
 
     ArrayList<ASN1Element> mods = null;
 
     mods = ASN1Element.decodeElements(encodedMods);
 
-    ldapmods = new ArrayList<LDAPModification>(mods.size());
+    ldapmods = new ArrayList<RawModification>(mods.size());
     for (ASN1Element elem : mods)
       ldapmods.add(LDAPModification.decode(elem));
 
diff --git a/opends/src/server/org/opends/server/synchronization/protocol/OperationContext.java b/opends/src/server/org/opends/server/synchronization/protocol/OperationContext.java
index d356b91..6d0c285 100644
--- a/opends/src/server/org/opends/server/synchronization/protocol/OperationContext.java
+++ b/opends/src/server/org/opends/server/synchronization/protocol/OperationContext.java
@@ -26,8 +26,8 @@
  */
 package org.opends.server.synchronization.protocol;
 
-import org.opends.server.core.Operation;
 import org.opends.server.synchronization.common.ChangeNumber;
+import org.opends.server.types.Operation;
 
 /**
  * This class describe the Synchronization context that is attached
diff --git a/opends/src/server/org/opends/server/synchronization/protocol/UpdateMessage.java b/opends/src/server/org/opends/server/synchronization/protocol/UpdateMessage.java
index 337abf0..efaafff 100644
--- a/opends/src/server/org/opends/server/synchronization/protocol/UpdateMessage.java
+++ b/opends/src/server/org/opends/server/synchronization/protocol/UpdateMessage.java
@@ -34,11 +34,11 @@
 import org.opends.server.core.DeleteOperation;
 import org.opends.server.core.ModifyDNOperation;
 import org.opends.server.core.ModifyOperation;
-import org.opends.server.core.Operation;
 import org.opends.server.protocols.asn1.ASN1Exception;
 import org.opends.server.protocols.internal.InternalClientConnection;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.synchronization.common.ChangeNumber;
+import org.opends.server.types.LDAPException;
+import org.opends.server.types.Operation;
 
 /**
  * Abstract class that must be extended to define a message
diff --git a/opends/src/server/org/opends/server/tasks/AddSchemaFileTask.java b/opends/src/server/org/opends/server/tasks/AddSchemaFileTask.java
index 5d97b38..e8a828c 100644
--- a/opends/src/server/org/opends/server/tasks/AddSchemaFileTask.java
+++ b/opends/src/server/org/opends/server/tasks/AddSchemaFileTask.java
@@ -42,7 +42,6 @@
 import org.opends.server.backends.task.TaskState;
 import org.opends.server.config.ConfigException;
 import org.opends.server.core.DirectoryServer;
-import org.opends.server.core.Operation;
 import org.opends.server.core.SchemaConfigManager;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
@@ -56,6 +55,7 @@
 import org.opends.server.types.InitializationException;
 import org.opends.server.types.LockManager;
 import org.opends.server.types.Modification;
+import org.opends.server.types.Operation;
 import org.opends.server.types.Privilege;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.Schema;
@@ -151,7 +151,7 @@
 
           int    msgID   = MSGID_TASK_ADDSCHEMAFILE_ERROR_CHECKING_FOR_FILE;
           String message = getMessage(msgID, filename, schemaDirectory,
-                                      stackTraceToSingleLineString(e));
+                                      getExceptionMessage(e));
           throw new DirectoryException(ResultCode.CONSTRAINT_VIOLATION,
                                        message, msgID, e);
         }
@@ -315,7 +315,7 @@
 
             int msgID = MSGID_TASK_ADDSCHEMAFILE_CANNOT_NOTIFY_SYNC_PROVIDER;
             String message = getMessage(msgID, provider.getClass().getName(),
-                                        stackTraceToSingleLineString(e));
+                                        getExceptionMessage(e));
             logError(ErrorLogCategory.SCHEMA, ErrorLogSeverity.SEVERE_ERROR,
                      message, msgID);
           }
diff --git a/opends/src/server/org/opends/server/tasks/BackupTask.java b/opends/src/server/org/opends/server/tasks/BackupTask.java
index 120b47f..f05b01c 100644
--- a/opends/src/server/org/opends/server/tasks/BackupTask.java
+++ b/opends/src/server/org/opends/server/tasks/BackupTask.java
@@ -33,7 +33,7 @@
 import static org.opends.server.messages.MessageHandler.getMessage;
 import static org.opends.server.util.ServerConstants.DATE_FORMAT_GMT_TIME;
 import static org.opends.server.loggers.Error.logError;
-import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
+import static org.opends.server.util.StaticUtils.*;
 import static org.opends.server.util.ServerConstants.
      BACKUP_DIRECTORY_DESCRIPTOR_FILE;
 
@@ -41,7 +41,6 @@
 import org.opends.server.backends.task.TaskState;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.LockFileManager;
-import org.opends.server.core.Operation;
 import org.opends.server.api.Backend;
 import org.opends.server.api.ClientConnection;
 import org.opends.server.config.ConfigEntry;
@@ -54,6 +53,7 @@
 import org.opends.server.types.Entry;
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
+import org.opends.server.types.Operation;
 import org.opends.server.types.Privilege;
 import org.opends.server.types.ResultCode;
 
@@ -277,7 +277,7 @@
       {
         int    msgID   = MSGID_BACKUPDB_CANNOT_CREATE_BACKUP_DIR;
         String message = getMessage(msgID, backupDirectory.getPath(),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         System.err.println(message);
         return false;
       }
@@ -388,7 +388,7 @@
         {
           int msgID   = MSGID_BACKUPDB_CANNOT_PARSE_BACKUP_DESCRIPTOR;
           String message = getMessage(msgID, descriptorPath,
-                                      stackTraceToSingleLineString(e));
+                                      getExceptionMessage(e));
           logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
           return false;
@@ -410,7 +410,7 @@
       {
         int msgID   = MSGID_BACKUPDB_CANNOT_CREATE_BACKUP_DIR;
         String message = getMessage(msgID, backupLocation.getPath(),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         return false;
@@ -453,7 +453,7 @@
       DirectoryServer.notifyBackupEnded(b, backupConfig, false);
       int msgID   = MSGID_BACKUPDB_ERROR_DURING_BACKUP;
       String message = getMessage(msgID, b.getBackendID(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                message, msgID);
       return false;
@@ -487,7 +487,7 @@
     {
       int    msgID   = MSGID_BACKUPDB_CANNOT_LOCK_BACKEND;
       String message = getMessage(msgID, b.getBackendID(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                message, msgID);
       return false;
@@ -521,7 +521,7 @@
     {
       int msgID   = MSGID_BACKUPDB_CANNOT_UNLOCK_BACKEND;
       String message = getMessage(msgID, b.getBackendID(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND,
                ErrorLogSeverity.SEVERE_WARNING, message, msgID);
       return false;
diff --git a/opends/src/server/org/opends/server/tasks/ExportTask.java b/opends/src/server/org/opends/server/tasks/ExportTask.java
index 1736fe0..0a42b18 100644
--- a/opends/src/server/org/opends/server/tasks/ExportTask.java
+++ b/opends/src/server/org/opends/server/tasks/ExportTask.java
@@ -31,13 +31,12 @@
 import static org.opends.server.messages.TaskMessages.*;
 import static org.opends.server.messages.ToolMessages.*;
 import static org.opends.server.messages.MessageHandler.getMessage;
-import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
+import static org.opends.server.util.StaticUtils.*;
 import static org.opends.server.loggers.Error.logError;
 import org.opends.server.backends.task.Task;
 import org.opends.server.backends.task.TaskState;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.LockFileManager;
-import org.opends.server.core.Operation;
 import org.opends.server.api.Backend;
 import org.opends.server.api.ClientConnection;
 import org.opends.server.config.ConfigEntry;
@@ -50,6 +49,7 @@
 import org.opends.server.types.ErrorLogSeverity;
 import org.opends.server.types.ExistingFileBehavior;
 import org.opends.server.types.LDIFExportConfig;
+import org.opends.server.types.Operation;
 import org.opends.server.types.Privilege;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchFilter;
@@ -266,7 +266,7 @@
         {
           int    msgID   = MSGID_LDIFEXPORT_CANNOT_PARSE_EXCLUDE_FILTER;
           String message = getMessage(msgID, filterString,
-                                      stackTraceToSingleLineString(e));
+                                      getExceptionMessage(e));
           logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
           return TaskState.STOPPED_BY_ERROR;
@@ -301,7 +301,7 @@
         {
           int    msgID   = MSGID_LDIFEXPORT_CANNOT_PARSE_INCLUDE_FILTER;
           String message = getMessage(msgID, filterString,
-                                      stackTraceToSingleLineString(e));
+                                      getExceptionMessage(e));
           logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
           return TaskState.STOPPED_BY_ERROR;
@@ -363,8 +363,7 @@
         catch (Exception e)
         {
           int    msgID   = MSGID_LDIFEXPORT_CANNOT_DECODE_EXCLUDE_BASE;
-          String message = getMessage(msgID, s,
-                                      stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, s, getExceptionMessage(e));
           logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
           return TaskState.STOPPED_BY_ERROR;
@@ -400,8 +399,7 @@
         catch (Exception e)
         {
           int    msgID   = MSGID_LDIFIMPORT_CANNOT_DECODE_INCLUDE_BASE;
-          String message = getMessage(msgID, s,
-                                      stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, s, getExceptionMessage(e));
           logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
           return TaskState.STOPPED_BY_ERROR;
@@ -481,7 +479,7 @@
       {
         int    msgID   = MSGID_LDIFEXPORT_CANNOT_LOCK_BACKEND;
         String message = getMessage(msgID, backend.getBackendID(),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         return TaskState.STOPPED_BY_ERROR;
@@ -511,7 +509,7 @@
         {
           DirectoryServer.notifyExportEnded(backend, exportConfig, false);
           int    msgID   = MSGID_LDIFEXPORT_ERROR_DURING_EXPORT;
-          String message = getMessage(msgID, stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, getExceptionMessage(e));
           logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
           return TaskState.STOPPED_BY_ERROR;
@@ -538,7 +536,7 @@
         {
           int    msgID   = MSGID_LDIFEXPORT_CANNOT_UNLOCK_BACKEND;
           String message = getMessage(msgID, backend.getBackendID(),
-                                      stackTraceToSingleLineString(e));
+                                      getExceptionMessage(e));
           logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_WARNING,
                    message, msgID);
           return TaskState.COMPLETED_WITH_ERRORS;
diff --git a/opends/src/server/org/opends/server/tasks/ImportTask.java b/opends/src/server/org/opends/server/tasks/ImportTask.java
index 0290422..1234638 100644
--- a/opends/src/server/org/opends/server/tasks/ImportTask.java
+++ b/opends/src/server/org/opends/server/tasks/ImportTask.java
@@ -32,7 +32,7 @@
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import org.opends.server.types.DebugLogLevel;
-import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
+import static org.opends.server.util.StaticUtils.*;
 import static org.opends.server.config.ConfigConstants.*;
 import static org.opends.server.core.DirectoryServer.getAttributeType;
 
@@ -40,7 +40,6 @@
 import org.opends.server.backends.task.TaskState;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.LockFileManager;
-import org.opends.server.core.Operation;
 import org.opends.server.api.Backend;
 import org.opends.server.api.ClientConnection;
 import org.opends.server.config.ConfigEntry;
@@ -53,6 +52,7 @@
 import org.opends.server.types.ErrorLogSeverity;
 import org.opends.server.types.ExistingFileBehavior;
 import org.opends.server.types.LDIFImportConfig;
+import org.opends.server.types.Operation;
 import org.opends.server.types.Privilege;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchFilter;
@@ -361,7 +361,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_LDIFIMPORT_CANNOT_DECODE_EXCLUDE_BASE;
-        String message = getMessage(msgID, s, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, s, getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         return TaskState.STOPPED_BY_ERROR;
@@ -400,8 +400,7 @@
         catch (Exception e)
         {
           int    msgID   = MSGID_LDIFIMPORT_CANNOT_DECODE_INCLUDE_BASE;
-          String message = getMessage(msgID, s,
-                                      stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, s, getExceptionMessage(e));
           logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
           return TaskState.STOPPED_BY_ERROR;
@@ -459,8 +458,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_LDIFIMPORT_CANNOT_OPEN_REJECTS_FILE;
-        String message = getMessage(msgID, rejectFile,
-                                    stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, rejectFile, getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         return TaskState.STOPPED_BY_ERROR;
@@ -522,7 +520,7 @@
 
         int    msgID   = MSGID_LDIFIMPORT_CANNOT_LOCK_BACKEND;
         String message = getMessage(msgID, backend.getBackendID(),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         return TaskState.STOPPED_BY_ERROR;
@@ -557,7 +555,7 @@
 
         DirectoryServer.notifyImportEnded(backend, importConfig, false);
         int    msgID   = MSGID_LDIFIMPORT_ERROR_DURING_IMPORT;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         return TaskState.STOPPED_BY_ERROR;
@@ -588,7 +586,7 @@
 
           int    msgID   = MSGID_LDIFIMPORT_CANNOT_UNLOCK_BACKEND;
           String message = getMessage(msgID, backend.getBackendID(),
-                                      stackTraceToSingleLineString(e));
+                                      getExceptionMessage(e));
           logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_WARNING,
                    message, msgID);
           return TaskState.COMPLETED_WITH_ERRORS;
diff --git a/opends/src/server/org/opends/server/tasks/RebuildTask.java b/opends/src/server/org/opends/server/tasks/RebuildTask.java
index 19f3d6a..7423855b 100644
--- a/opends/src/server/org/opends/server/tasks/RebuildTask.java
+++ b/opends/src/server/org/opends/server/tasks/RebuildTask.java
@@ -38,9 +38,9 @@
 import org.opends.server.types.Entry;
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
+import org.opends.server.types.Operation;
 import org.opends.server.types.Privilege;
 import org.opends.server.types.ResultCode;
-import org.opends.server.core.Operation;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.LockFileManager;
 import org.opends.server.api.ClientConnection;
@@ -48,7 +48,7 @@
 import org.opends.server.config.ConfigEntry;
 
 import static org.opends.server.core.DirectoryServer.getAttributeType;
-import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
+import static org.opends.server.util.StaticUtils.*;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
 import static org.opends.server.messages.TaskMessages.
@@ -228,7 +228,7 @@
       {
         int    msgID   = MSGID_REBUILDINDEX_CANNOT_EXCLUSIVE_LOCK_BACKEND;
         String message = getMessage(msgID, backend.getBackendID(),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         return TaskState.STOPPED_BY_ERROR;
@@ -252,7 +252,7 @@
       {
         int    msgID   = MSGID_REBUILDINDEX_CANNOT_SHARED_LOCK_BACKEND;
         String message = getMessage(msgID, backend.getBackendID(),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         return TaskState.STOPPED_BY_ERROR;
@@ -300,7 +300,7 @@
     {
       int    msgID   = MSGID_REBUILDINDEX_CANNOT_UNLOCK_BACKEND;
       String message = getMessage(msgID, backend.getBackendID(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_WARNING,
                message, msgID);
       return TaskState.COMPLETED_WITH_ERRORS;
diff --git a/opends/src/server/org/opends/server/tasks/RestoreTask.java b/opends/src/server/org/opends/server/tasks/RestoreTask.java
index 3046de2..1683058 100644
--- a/opends/src/server/org/opends/server/tasks/RestoreTask.java
+++ b/opends/src/server/org/opends/server/tasks/RestoreTask.java
@@ -31,7 +31,7 @@
 import static org.opends.server.messages.TaskMessages.*;
 import static org.opends.server.messages.ToolMessages.*;
 import static org.opends.server.messages.MessageHandler.getMessage;
-import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
+import static org.opends.server.util.StaticUtils.*;
 import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
 import org.opends.server.types.DebugLogLevel;
@@ -40,7 +40,6 @@
 import org.opends.server.backends.task.TaskState;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.LockFileManager;
-import org.opends.server.core.Operation;
 import org.opends.server.api.Backend;
 import org.opends.server.api.ClientConnection;
 import org.opends.server.config.ConfigEntry;
@@ -54,6 +53,7 @@
 import org.opends.server.types.Entry;
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
+import org.opends.server.types.Operation;
 import org.opends.server.types.Privilege;
 import org.opends.server.types.RestoreConfig;
 import org.opends.server.types.ResultCode;
@@ -152,7 +152,7 @@
     {
       int    msgID   = MSGID_RESTOREDB_CANNOT_LOCK_BACKEND;
       String message = getMessage(msgID, backend.getBackendID(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                message, msgID);
       return false;
@@ -185,7 +185,7 @@
     {
       int    msgID   = MSGID_RESTOREDB_CANNOT_UNLOCK_BACKEND;
       String message = getMessage(msgID, backend.getBackendID(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_WARNING,
                message, msgID);
       return false;
@@ -209,7 +209,7 @@
     {
       int    msgID   = MSGID_RESTOREDB_CANNOT_READ_BACKUP_DIRECTORY;
       String message = getMessage(msgID, backupDirectory,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR, message,
                msgID);
       return TaskState.STOPPED_BY_ERROR;
@@ -342,7 +342,7 @@
             DirectoryServer.notifyRestoreEnded(backend, restoreConfig, false);
             int    msgID   = MSGID_RESTOREDB_ERROR_DURING_BACKUP;
             String message = getMessage(msgID, backupID, backupDir.getPath(),
-                                        stackTraceToSingleLineString(e));
+                                        getExceptionMessage(e));
             logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                      message, msgID);
             errorsEncountered = true;
diff --git a/opends/src/server/org/opends/server/tasks/ShutdownTask.java b/opends/src/server/org/opends/server/tasks/ShutdownTask.java
index ae21261..683bf66 100644
--- a/opends/src/server/org/opends/server/tasks/ShutdownTask.java
+++ b/opends/src/server/org/opends/server/tasks/ShutdownTask.java
@@ -35,12 +35,12 @@
 import org.opends.server.backends.task.Task;
 import org.opends.server.backends.task.TaskState;
 import org.opends.server.core.DirectoryServer;
-import org.opends.server.core.Operation;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.Entry;
+import org.opends.server.types.Operation;
 import org.opends.server.types.Privilege;
 import org.opends.server.types.ResultCode;
 
diff --git a/opends/src/server/org/opends/server/tasks/TaskUtils.java b/opends/src/server/org/opends/server/tasks/TaskUtils.java
index 4f749a2..ffd1971 100644
--- a/opends/src/server/org/opends/server/tasks/TaskUtils.java
+++ b/opends/src/server/org/opends/server/tasks/TaskUtils.java
@@ -55,6 +55,7 @@
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.RawModification;
 import org.opends.server.types.ResultCode;
 
 import java.util.ArrayList;
@@ -104,7 +105,7 @@
     {
       int    msgID   = MSGID_CANNOT_DETERMINE_BACKEND_ID;
       String message = getMessage(msgID, String.valueOf(configEntry.getDN()),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       Error.logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                message, msgID);
       return null;
@@ -140,7 +141,7 @@
     {
       int    msgID   = MSGID_CANNOT_DECODE_BACKEND_BASE_DN;
       String message = getMessage(msgID, DN_BACKEND_BASE,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       Error.logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                      message, msgID);
       return configEntries;
@@ -163,7 +164,7 @@
     {
       int    msgID   = MSGID_CANNOT_RETRIEVE_BACKEND_BASE_ENTRY;
       String message = getMessage(msgID, DN_BACKEND_BASE,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       Error.logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                      message, msgID);
       return configEntries;
@@ -207,7 +208,7 @@
       {
         int    msgID   = MSGID_CANNOT_DETERMINE_BACKEND_ID;
         String message = getMessage(msgID, String.valueOf(configEntry.getDN()),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         Error.logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         continue;
@@ -259,7 +260,7 @@
 
     LDAPModification m = new LDAPModification(ModificationType.REPLACE, a);
 
-    ArrayList<LDAPModification> modList = new ArrayList<LDAPModification>(1);
+    ArrayList<RawModification> modList = new ArrayList<RawModification>(1);
     modList.add(m);
 
     InternalClientConnection conn =
diff --git a/opends/src/server/org/opends/server/tools/BackUpDB.java b/opends/src/server/org/opends/server/tools/BackUpDB.java
index a08cfad..713dde7 100644
--- a/opends/src/server/org/opends/server/tools/BackUpDB.java
+++ b/opends/src/server/org/opends/server/tools/BackUpDB.java
@@ -347,7 +347,7 @@
       {
         int    msgID   = MSGID_BACKUPDB_CANNOT_CREATE_BACKUP_DIR;
         String message = getMessage(msgID, backupDirectory.getValue(),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -367,7 +367,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_SERVER_BOOTSTRAP_ERROR;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -387,7 +387,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_LOAD_CONFIG;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -416,7 +416,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_LOAD_SCHEMA;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -445,7 +445,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_INITIALIZE_CORE_CONFIG;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -473,7 +473,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_INITIALIZE_CRYPTO_MANAGER;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -598,7 +598,7 @@
       {
         int    msgID   = MSGID_BACKUPDB_CANNOT_LOCK_BACKEND;
         String message = getMessage(msgID, b.getBackendID(),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         errorsEncountered = true;
@@ -673,7 +673,7 @@
             {
               msgID   = MSGID_BACKUPDB_CANNOT_UNLOCK_BACKEND;
               message = getMessage(msgID, b.getBackendID(),
-                                   stackTraceToSingleLineString(e));
+                                   getExceptionMessage(e));
               logError(ErrorLogCategory.BACKEND,
                        ErrorLogSeverity.SEVERE_WARNING, message, msgID);
             }
@@ -683,8 +683,7 @@
           catch (Exception e)
           {
             msgID   = MSGID_BACKUPDB_CANNOT_PARSE_BACKUP_DESCRIPTOR;
-            message = getMessage(msgID, descriptorPath,
-                                 stackTraceToSingleLineString(e));
+            message = getMessage(msgID, descriptorPath, getExceptionMessage(e));
             logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                      message, msgID);
             errorsEncountered = true;
@@ -706,7 +705,7 @@
             {
               msgID   = MSGID_BACKUPDB_CANNOT_UNLOCK_BACKEND;
               message = getMessage(msgID, b.getBackendID(),
-                                   stackTraceToSingleLineString(e2));
+                                   getExceptionMessage(e2));
               logError(ErrorLogCategory.BACKEND,
                        ErrorLogSeverity.SEVERE_WARNING, message, msgID);
             }
@@ -728,8 +727,7 @@
         catch (Exception e)
         {
           msgID   = MSGID_BACKUPDB_CANNOT_CREATE_BACKUP_DIR;
-          message = getMessage(msgID, backupDirPath,
-                               stackTraceToSingleLineString(e));
+          message = getMessage(msgID, backupDirPath, getExceptionMessage(e));
           logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
           errorsEncountered = true;
@@ -751,7 +749,7 @@
           {
             msgID   = MSGID_BACKUPDB_CANNOT_UNLOCK_BACKEND;
             message = getMessage(msgID, b.getBackendID(),
-                                 stackTraceToSingleLineString(e2));
+                                 getExceptionMessage(e2));
             logError(ErrorLogCategory.BACKEND,
                      ErrorLogSeverity.SEVERE_WARNING, message, msgID);
           }
@@ -800,7 +798,7 @@
         {
           msgID   = MSGID_BACKUPDB_CANNOT_UNLOCK_BACKEND;
           message = getMessage(msgID, b.getBackendID(),
-                               stackTraceToSingleLineString(e2));
+                               getExceptionMessage(e2));
           logError(ErrorLogCategory.BACKEND,
                    ErrorLogSeverity.SEVERE_WARNING, message, msgID);
         }
@@ -839,8 +837,7 @@
         catch (Exception e)
         {
           msgID   = MSGID_BACKUPDB_CANNOT_UNLOCK_BACKEND;
-          message = getMessage(msgID, b.getBackendID(),
-                               stackTraceToSingleLineString(e));
+          message = getMessage(msgID, b.getBackendID(), getExceptionMessage(e));
           logError(ErrorLogCategory.BACKEND,
                    ErrorLogSeverity.SEVERE_WARNING, message, msgID);
         }
@@ -850,8 +847,7 @@
       catch (Exception e)
       {
         msgID   = MSGID_BACKUPDB_ERROR_DURING_BACKUP;
-        message = getMessage(msgID, b.getBackendID(),
-                                    stackTraceToSingleLineString(e));
+        message = getMessage(msgID, b.getBackendID(), getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         errorsEncountered = true;
@@ -873,7 +869,7 @@
         {
           msgID   = MSGID_BACKUPDB_CANNOT_UNLOCK_BACKEND;
           message = getMessage(msgID, b.getBackendID(),
-                               stackTraceToSingleLineString(e2));
+                               getExceptionMessage(e2));
           logError(ErrorLogCategory.BACKEND,
                    ErrorLogSeverity.SEVERE_WARNING, message, msgID);
         }
@@ -900,8 +896,7 @@
       catch (Exception e)
       {
         msgID   = MSGID_BACKUPDB_CANNOT_UNLOCK_BACKEND;
-        message = getMessage(msgID, b.getBackendID(),
-                             stackTraceToSingleLineString(e));
+        message = getMessage(msgID, b.getBackendID(), getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND,
                  ErrorLogSeverity.SEVERE_WARNING, message, msgID);
         errorsEncountered = true;
@@ -963,7 +958,7 @@
     {
       int    msgID   = MSGID_CANNOT_DECODE_BACKEND_BASE_DN;
       String message = getMessage(msgID, DN_BACKEND_BASE,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR, message,
                msgID);
 
@@ -987,7 +982,7 @@
     {
       int    msgID   = MSGID_CANNOT_RETRIEVE_BACKEND_BASE_ENTRY;
       String message = getMessage(msgID, DN_BACKEND_BASE,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR, message,
                msgID);
       System.exit(1);
@@ -1031,7 +1026,7 @@
       {
         int    msgID   = MSGID_CANNOT_DETERMINE_BACKEND_ID;
         String message = getMessage(msgID, String.valueOf(configEntry.getDN()),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         System.exit(1);
@@ -1071,7 +1066,7 @@
       {
         int    msgID   = MSGID_CANNOT_DETERMINE_BACKEND_CLASS;
         String message = getMessage(msgID, String.valueOf(configEntry.getDN()),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         System.exit(1);
@@ -1087,7 +1082,7 @@
         int    msgID   = MSGID_CANNOT_LOAD_BACKEND_CLASS;
         String message = getMessage(msgID, backendClassName,
                                     String.valueOf(configEntry.getDN()),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         System.exit(1);
@@ -1104,7 +1099,7 @@
         int    msgID   = MSGID_CANNOT_INSTANTIATE_BACKEND_CLASS;
         String message = getMessage(msgID, backendClassName,
                                     String.valueOf(configEntry.getDN()),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         System.exit(1);
@@ -1139,7 +1134,7 @@
       {
         int    msgID   = MSGID_CANNOT_DETERMINE_BASES_FOR_BACKEND;
         String message = getMessage(msgID, String.valueOf(configEntry.getDN()),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         System.exit(1);
diff --git a/opends/src/server/org/opends/server/tools/BackendToolUtils.java b/opends/src/server/org/opends/server/tools/BackendToolUtils.java
index 0b47d84..42c2a50 100644
--- a/opends/src/server/org/opends/server/tools/BackendToolUtils.java
+++ b/opends/src/server/org/opends/server/tools/BackendToolUtils.java
@@ -37,35 +37,12 @@
 import org.opends.server.types.ErrorLogSeverity;
 import org.opends.server.core.DirectoryServer;
 
-import static org.opends.server.config.ConfigConstants.DN_BACKEND_BASE;
-import static org.opends.server.config.ConfigConstants.ATTR_BACKEND_ID;
-import static org.opends.server.config.ConfigConstants.ATTR_BACKEND_CLASS;
-import static org.opends.server.config.ConfigConstants.ATTR_BACKEND_BASE_DN;
-import static org.opends.server.messages.ToolMessages.
-    MSGID_CANNOT_DECODE_BACKEND_BASE_DN;
-import static org.opends.server.messages.ToolMessages.
-    MSGID_CANNOT_RETRIEVE_BACKEND_BASE_ENTRY;
-import static org.opends.server.messages.ToolMessages.
-    MSGID_CANNOT_DETERMINE_BACKEND_ID;
-import static org.opends.server.messages.ToolMessages.
-    MSGID_CANNOT_DETERMINE_BACKEND_CLASS;
-import static org.opends.server.messages.ToolMessages.
-    MSGID_CANNOT_LOAD_BACKEND_CLASS;
-import static org.opends.server.messages.ToolMessages.
-    MSGID_CANNOT_INSTANTIATE_BACKEND_CLASS;
-import static org.opends.server.messages.ToolMessages.
-    MSGID_NO_BASES_FOR_BACKEND;
-import static org.opends.server.messages.ToolMessages.
-    MSGID_CANNOT_DETERMINE_BASES_FOR_BACKEND;
-import static org.opends.server.messages.MessageHandler.getMessage;
-import static org.opends.server.messages.ConfigMessages.
-    MSGID_CONFIG_BACKEND_ATTR_DESCRIPTION_BACKEND_ID;
-import static org.opends.server.messages.ConfigMessages.
-    MSGID_CONFIG_BACKEND_ATTR_DESCRIPTION_CLASS;
-import static org.opends.server.messages.ConfigMessages.
-    MSGID_CONFIG_BACKEND_ATTR_DESCRIPTION_BASE_DNS;
-import static org.opends.server.loggers.Error.logError;
-import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
+import static org.opends.server.config.ConfigConstants.*;
+import static org.opends.server.messages.ToolMessages.*;
+import static org.opends.server.messages.MessageHandler.*;
+import static org.opends.server.messages.ConfigMessages.*;
+import static org.opends.server.loggers.Error.*;
+import static org.opends.server.util.StaticUtils.*;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -111,7 +88,7 @@
     {
       int    msgID   = MSGID_CANNOT_DECODE_BACKEND_BASE_DN;
       String message = getMessage(msgID, DN_BACKEND_BASE,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR, message,
                msgID);
       return 1;
@@ -134,7 +111,7 @@
     {
       int    msgID   = MSGID_CANNOT_RETRIEVE_BACKEND_BASE_ENTRY;
       String message = getMessage(msgID, DN_BACKEND_BASE,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR, message,
                msgID);
       return 1;
@@ -178,7 +155,7 @@
       {
         int    msgID   = MSGID_CANNOT_DETERMINE_BACKEND_ID;
         String message = getMessage(msgID, String.valueOf(configEntry.getDN()),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         return 1;
@@ -218,7 +195,7 @@
       {
         int    msgID   = MSGID_CANNOT_DETERMINE_BACKEND_CLASS;
         String message = getMessage(msgID, String.valueOf(configEntry.getDN()),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         return 1;
@@ -234,7 +211,7 @@
         int    msgID   = MSGID_CANNOT_LOAD_BACKEND_CLASS;
         String message = getMessage(msgID, backendClassName,
                                     String.valueOf(configEntry.getDN()),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         return 1;
@@ -251,7 +228,7 @@
         int    msgID   = MSGID_CANNOT_INSTANTIATE_BACKEND_CLASS;
         String message = getMessage(msgID, backendClassName,
                                     String.valueOf(configEntry.getDN()),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         return 1;
@@ -286,7 +263,7 @@
       {
         int    msgID   = MSGID_CANNOT_DETERMINE_BASES_FOR_BACKEND;
         String message = getMessage(msgID, String.valueOf(configEntry.getDN()),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         return 1;
diff --git a/opends/src/server/org/opends/server/tools/EncodePassword.java b/opends/src/server/org/opends/server/tools/EncodePassword.java
index 10e4293..1fb4f2f 100644
--- a/opends/src/server/org/opends/server/tools/EncodePassword.java
+++ b/opends/src/server/org/opends/server/tools/EncodePassword.java
@@ -359,7 +359,7 @@
       catch (Exception e)
       {
         int msgID = MSGID_SERVER_BOOTSTRAP_ERROR;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -379,7 +379,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_LOAD_CONFIG;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -408,7 +408,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_LOAD_SCHEMA;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -437,7 +437,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_INITIALIZE_CORE_CONFIG;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -467,7 +467,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_ENCPW_CANNOT_INITIALIZE_STORAGE_SCHEMES;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -764,7 +764,7 @@
         catch (Exception e)
         {
           int msgID = MSGID_ENCPW_CANNOT_ENCODE;
-          String message = getMessage(msgID, stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, getExceptionMessage(e));
           err.println(wrapText(message, MAX_LINE_WIDTH));
           return 1;
         }
@@ -789,7 +789,7 @@
         catch (Exception e)
         {
           int msgID = MSGID_ENCPW_CANNOT_ENCODE;
-          String message = getMessage(msgID, stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, getExceptionMessage(e));
           err.println(wrapText(message, MAX_LINE_WIDTH));
           return 1;
         }
diff --git a/opends/src/server/org/opends/server/tools/ExportLDIF.java b/opends/src/server/org/opends/server/tools/ExportLDIF.java
index 9197a9b..139e229 100644
--- a/opends/src/server/org/opends/server/tools/ExportLDIF.java
+++ b/opends/src/server/org/opends/server/tools/ExportLDIF.java
@@ -309,7 +309,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_SERVER_BOOTSTRAP_ERROR;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -329,7 +329,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_LOAD_CONFIG;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -358,7 +358,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_LOAD_SCHEMA;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -387,7 +387,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_INITIALIZE_CORE_CONFIG;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -415,7 +415,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_INITIALIZE_CRYPTO_MANAGER;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -452,7 +452,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_LDIFEXPORT_CANNOT_INITIALIZE_PLUGINS;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -530,7 +530,7 @@
         {
           int    msgID   = MSGID_LDIFEXPORT_CANNOT_PARSE_EXCLUDE_FILTER;
           String message = getMessage(msgID, filterString,
-                                      stackTraceToSingleLineString(e));
+                                      getExceptionMessage(e));
           logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
           return 1;
@@ -565,7 +565,7 @@
         {
           int    msgID   = MSGID_LDIFEXPORT_CANNOT_PARSE_INCLUDE_FILTER;
           String message = getMessage(msgID, filterString,
-                                      stackTraceToSingleLineString(e));
+                                      getExceptionMessage(e));
           logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
           return 1;
@@ -653,8 +653,7 @@
         catch (Exception e)
         {
           int    msgID   = MSGID_LDIFEXPORT_CANNOT_DECODE_EXCLUDE_BASE;
-          String message = getMessage(msgID, s,
-                                      stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, s, getExceptionMessage(e));
           logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
           return 1;
@@ -690,8 +689,7 @@
         catch (Exception e)
         {
           int    msgID   = MSGID_LDIFIMPORT_CANNOT_DECODE_INCLUDE_BASE;
-          String message = getMessage(msgID, s,
-                                      stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, s, getExceptionMessage(e));
           logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
           return 1;
@@ -782,7 +780,7 @@
     {
       int    msgID   = MSGID_LDIFEXPORT_CANNOT_LOCK_BACKEND;
       String message = getMessage(msgID, backend.getBackendID(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                message, msgID);
       return 0;
@@ -804,7 +802,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_LDIFEXPORT_ERROR_DURING_EXPORT;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR, message,
                msgID);
     }
@@ -828,7 +826,7 @@
     {
       int    msgID   = MSGID_LDIFEXPORT_CANNOT_UNLOCK_BACKEND;
       String message = getMessage(msgID, backend.getBackendID(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_WARNING,
                message, msgID);
     }
diff --git a/opends/src/server/org/opends/server/tools/ImportLDIF.java b/opends/src/server/org/opends/server/tools/ImportLDIF.java
index 41883d2..1a585f5 100644
--- a/opends/src/server/org/opends/server/tools/ImportLDIF.java
+++ b/opends/src/server/org/opends/server/tools/ImportLDIF.java
@@ -373,7 +373,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_SERVER_BOOTSTRAP_ERROR;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -393,7 +393,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_LOAD_CONFIG;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -422,7 +422,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_LOAD_SCHEMA;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -451,7 +451,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_INITIALIZE_CORE_CONFIG;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -479,7 +479,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_INITIALIZE_CRYPTO_MANAGER;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -517,7 +517,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_LDIFIMPORT_CANNOT_INITIALIZE_PWPOLICY;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -547,7 +547,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_LDIFIMPORT_CANNOT_INITIALIZE_PLUGINS;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -651,7 +651,7 @@
         {
           int    msgID   = MSGID_LDIFIMPORT_CANNOT_PARSE_EXCLUDE_FILTER;
           String message = getMessage(msgID, filterString,
-                                      stackTraceToSingleLineString(e));
+                                      getExceptionMessage(e));
           logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
           return 1;
@@ -686,7 +686,7 @@
         {
           int    msgID   = MSGID_LDIFIMPORT_CANNOT_PARSE_INCLUDE_FILTER;
           String message = getMessage(msgID, filterString,
-                                      stackTraceToSingleLineString(e));
+                                      getExceptionMessage(e));
           logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
           return 1;
@@ -793,7 +793,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_LDIFIMPORT_CANNOT_DECODE_EXCLUDE_BASE;
-        String message = getMessage(msgID, s, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, s, getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         return 1;
@@ -832,8 +832,7 @@
         catch (Exception e)
         {
           int    msgID   = MSGID_LDIFIMPORT_CANNOT_DECODE_INCLUDE_BASE;
-          String message = getMessage(msgID, s,
-                                      stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, s, getExceptionMessage(e));
           logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                    message, msgID);
           return 1;
@@ -949,7 +948,7 @@
       {
         int    msgID   = MSGID_LDIFIMPORT_CANNOT_OPEN_REJECTS_FILE;
         String message = getMessage(msgID, rejectFile.getValue(),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                  message, msgID);
         return 1;
@@ -981,7 +980,7 @@
     {
       int    msgID   = MSGID_LDIFIMPORT_CANNOT_LOCK_BACKEND;
       String message = getMessage(msgID, backend.getBackendID(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                message, msgID);
       return 1;
@@ -1005,7 +1004,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_LDIFIMPORT_ERROR_DURING_IMPORT;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR, message,
                msgID);
       retCode = 1;
@@ -1031,7 +1030,7 @@
     {
       int    msgID   = MSGID_LDIFIMPORT_CANNOT_UNLOCK_BACKEND;
       String message = getMessage(msgID, backend.getBackendID(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_WARNING,
                message, msgID);
       retCode = 1;
diff --git a/opends/src/server/org/opends/server/tools/LDAPAuthenticationHandler.java b/opends/src/server/org/opends/server/tools/LDAPAuthenticationHandler.java
index dba22bc..4041e47 100644
--- a/opends/src/server/org/opends/server/tools/LDAPAuthenticationHandler.java
+++ b/opends/src/server/org/opends/server/tools/LDAPAuthenticationHandler.java
@@ -66,9 +66,9 @@
 import org.opends.server.protocols.ldap.ExtendedRequestProtocolOp;
 import org.opends.server.protocols.ldap.ExtendedResponseProtocolOp;
 import org.opends.server.protocols.ldap.LDAPControl;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPMessage;
 import org.opends.server.protocols.ldap.LDAPResultCode;
+import org.opends.server.types.LDAPException;
 import org.opends.server.util.Base64;
 import org.opends.server.util.PasswordReader;
 
@@ -329,14 +329,14 @@
     catch (IOException ioe)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_SIMPLE_BIND;
-      String message = getMessage(msgID, stackTraceToSingleLineString(ioe));
+      String message = getMessage(msgID, getExceptionMessage(ioe));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                 message, ioe);
     }
     catch (Exception e)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_SIMPLE_BIND;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_ENCODING_ERROR,
                                 msgID, message, e);
     }
@@ -360,28 +360,28 @@
     catch (IOException ioe)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(ioe));
+      String message = getMessage(msgID, getExceptionMessage(ioe));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                 message, ioe);
     }
     catch (ASN1Exception ae)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(ae));
+      String message = getMessage(msgID, getExceptionMessage(ae));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                 msgID, message, ae);
     }
     catch (LDAPException le)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(le));
+      String message = getMessage(msgID, getExceptionMessage(le));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                 msgID, message, le);
     }
     catch (Exception e)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                 message, e);
     }
@@ -653,7 +653,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_SASL_BIND;
       String message = getMessage(msgID, SASL_MECHANISM_ANONYMOUS,
-                                  stackTraceToSingleLineString(ioe));
+                                  getExceptionMessage(ioe));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                 message, ioe);
     }
@@ -661,7 +661,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_SASL_BIND;
       String message = getMessage(msgID, SASL_MECHANISM_ANONYMOUS,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_ENCODING_ERROR,
                                 msgID, message, e);
     }
@@ -685,28 +685,28 @@
     catch (IOException ioe)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(ioe));
+      String message = getMessage(msgID, getExceptionMessage(ioe));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                 message, ioe);
     }
     catch (ASN1Exception ae)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(ae));
+      String message = getMessage(msgID, getExceptionMessage(ae));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                 msgID, message, ae);
     }
     catch (LDAPException le)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(le));
+      String message = getMessage(msgID, getExceptionMessage(le));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                 msgID, message, le);
     }
     catch (Exception e)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                 message, e);
     }
@@ -926,7 +926,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_INITIAL_SASL_BIND;
       String message = getMessage(msgID, SASL_MECHANISM_CRAM_MD5,
-                                  stackTraceToSingleLineString(ioe));
+                                  getExceptionMessage(ioe));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                 message, ioe);
     }
@@ -934,7 +934,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_INITIAL_SASL_BIND;
       String message = getMessage(msgID, SASL_MECHANISM_CRAM_MD5,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_ENCODING_ERROR,
                                 msgID, message, e);
     }
@@ -960,7 +960,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_INITIAL_BIND_RESPONSE;
       String message = getMessage(msgID, SASL_MECHANISM_CRAM_MD5,
-                                  stackTraceToSingleLineString(ioe));
+                                  getExceptionMessage(ioe));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                 message, ioe);
     }
@@ -968,7 +968,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_INITIAL_BIND_RESPONSE;
       String message = getMessage(msgID, SASL_MECHANISM_CRAM_MD5,
-                                  stackTraceToSingleLineString(ae));
+                                  getExceptionMessage(ae));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                 msgID, message, ae);
     }
@@ -976,7 +976,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_INITIAL_BIND_RESPONSE;
       String message = getMessage(msgID, SASL_MECHANISM_CRAM_MD5,
-                                  stackTraceToSingleLineString(le));
+                                  getExceptionMessage(le));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                 msgID, message, le);
     }
@@ -984,7 +984,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_INITIAL_BIND_RESPONSE;
       String message = getMessage(msgID, SASL_MECHANISM_CRAM_MD5,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                 message, e);
     }
@@ -1086,7 +1086,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_SECOND_SASL_BIND;
       String message = getMessage(msgID, SASL_MECHANISM_CRAM_MD5,
-                                  stackTraceToSingleLineString(ioe));
+                                  getExceptionMessage(ioe));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                 message, ioe);
     }
@@ -1094,7 +1094,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_SECOND_SASL_BIND;
       String message = getMessage(msgID, SASL_MECHANISM_CRAM_MD5,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                 message, e);
     }
@@ -1119,7 +1119,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_SECOND_BIND_RESPONSE;
       String message = getMessage(msgID, SASL_MECHANISM_CRAM_MD5,
-                                  stackTraceToSingleLineString(ioe));
+                                  getExceptionMessage(ioe));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                 message, ioe);
     }
@@ -1127,7 +1127,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_SECOND_BIND_RESPONSE;
       String message = getMessage(msgID, SASL_MECHANISM_CRAM_MD5,
-                                  stackTraceToSingleLineString(ae));
+                                  getExceptionMessage(ae));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                 msgID, message, ae);
     }
@@ -1135,7 +1135,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_SECOND_BIND_RESPONSE;
       String message = getMessage(msgID, SASL_MECHANISM_CRAM_MD5,
-                                  stackTraceToSingleLineString(le));
+                                  getExceptionMessage(le));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                 msgID, message, le);
     }
@@ -1143,7 +1143,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_SECOND_BIND_RESPONSE;
       String message = getMessage(msgID, SASL_MECHANISM_CRAM_MD5,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                 message, e);
     }
@@ -1245,7 +1245,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_LDAPAUTH_CANNOT_INITIALIZE_MD5_DIGEST;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                   message, e);
       }
@@ -1553,7 +1553,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_INITIAL_SASL_BIND;
       String message = getMessage(msgID, SASL_MECHANISM_DIGEST_MD5,
-                                  stackTraceToSingleLineString(ioe));
+                                  getExceptionMessage(ioe));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                 message, ioe);
     }
@@ -1561,7 +1561,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_INITIAL_SASL_BIND;
       String message = getMessage(msgID, SASL_MECHANISM_DIGEST_MD5,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_ENCODING_ERROR,
                                 msgID, message, e);
     }
@@ -1587,7 +1587,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_INITIAL_BIND_RESPONSE;
       String message = getMessage(msgID, SASL_MECHANISM_DIGEST_MD5,
-                                  stackTraceToSingleLineString(ioe));
+                                  getExceptionMessage(ioe));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                 message, ioe);
     }
@@ -1595,7 +1595,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_INITIAL_BIND_RESPONSE;
       String message = getMessage(msgID, SASL_MECHANISM_DIGEST_MD5,
-                                  stackTraceToSingleLineString(ae));
+                                  getExceptionMessage(ae));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                 msgID, message, ae);
     }
@@ -1603,7 +1603,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_INITIAL_BIND_RESPONSE;
       String message = getMessage(msgID, SASL_MECHANISM_DIGEST_MD5,
-                                  stackTraceToSingleLineString(le));
+                                  getExceptionMessage(le));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                 msgID, message, le);
     }
@@ -1611,7 +1611,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_INITIAL_BIND_RESPONSE;
       String message = getMessage(msgID, SASL_MECHANISM_DIGEST_MD5,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                 message, e);
     }
@@ -1821,7 +1821,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_LDAPAUTH_DIGESTMD5_CANNOT_CREATE_RESPONSE_DIGEST;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                 message, e);
     }
@@ -1882,7 +1882,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_SECOND_SASL_BIND;
       String message = getMessage(msgID, SASL_MECHANISM_DIGEST_MD5,
-                                  stackTraceToSingleLineString(ioe));
+                                  getExceptionMessage(ioe));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                 message, ioe);
     }
@@ -1890,7 +1890,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_SECOND_SASL_BIND;
       String message = getMessage(msgID, SASL_MECHANISM_DIGEST_MD5,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_ENCODING_ERROR,
                                 msgID, message, e);
     }
@@ -1915,7 +1915,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_SECOND_BIND_RESPONSE;
       String message = getMessage(msgID, SASL_MECHANISM_DIGEST_MD5,
-                                  stackTraceToSingleLineString(ioe));
+                                  getExceptionMessage(ioe));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                 message, ioe);
     }
@@ -1923,7 +1923,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_SECOND_BIND_RESPONSE;
       String message = getMessage(msgID, SASL_MECHANISM_DIGEST_MD5,
-                                  stackTraceToSingleLineString(ae));
+                                  getExceptionMessage(ae));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                 msgID, message, ae);
     }
@@ -1931,7 +1931,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_SECOND_BIND_RESPONSE;
       String message = getMessage(msgID, SASL_MECHANISM_DIGEST_MD5,
-                                  stackTraceToSingleLineString(le));
+                                  getExceptionMessage(le));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                 msgID, message, le);
     }
@@ -1939,7 +1939,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_SECOND_BIND_RESPONSE;
       String message = getMessage(msgID, SASL_MECHANISM_DIGEST_MD5,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                 message, e);
     }
@@ -2035,7 +2035,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_LDAPAUTH_DIGESTMD5_COULD_NOT_DECODE_RSPAUTH;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new LDAPException(LDAPResultCode.PROTOCOL_ERROR, msgID, message);
     }
 
@@ -2050,7 +2050,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_LDAPAUTH_DIGESTMD5_COULD_NOT_CALCULATE_RSPAUTH;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                 message);
     }
@@ -2283,7 +2283,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_LDAPAUTH_CANNOT_INITIALIZE_MD5_DIGEST;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                   message, e);
       }
@@ -2563,7 +2563,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_SASL_BIND;
       String message = getMessage(msgID, SASL_MECHANISM_EXTERNAL,
-                                  stackTraceToSingleLineString(ioe));
+                                  getExceptionMessage(ioe));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                 message, ioe);
     }
@@ -2571,7 +2571,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_SASL_BIND;
       String message = getMessage(msgID, SASL_MECHANISM_EXTERNAL,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_ENCODING_ERROR,
                                 msgID, message, e);
     }
@@ -2595,28 +2595,28 @@
     catch (IOException ioe)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(ioe));
+      String message = getMessage(msgID, getExceptionMessage(ioe));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                 message, ioe);
     }
     catch (ASN1Exception ae)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(ae));
+      String message = getMessage(msgID, getExceptionMessage(ae));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                 msgID, message, ae);
     }
     catch (LDAPException le)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(le));
+      String message = getMessage(msgID, getExceptionMessage(le));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                 msgID, message, le);
     }
     catch (Exception e)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                 message, e);
     }
@@ -2951,7 +2951,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_LDAPAUTH_GSSAPI_CANNOT_CREATE_JAAS_CONFIG;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                 message, e);
     }
@@ -2971,7 +2971,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_LDAPAUTH_GSSAPI_LOCAL_AUTHENTICATION_FAILED;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                 message, e);
     }
@@ -2992,7 +2992,7 @@
       }
 
       int    msgID   = MSGID_LDAPAUTH_GSSAPI_REMOTE_AUTHENTICATION_FAILED;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                 message, e);
     }
@@ -3186,7 +3186,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_SASL_BIND;
       String message = getMessage(msgID, SASL_MECHANISM_PLAIN,
-                                  stackTraceToSingleLineString(ioe));
+                                  getExceptionMessage(ioe));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                 message, ioe);
     }
@@ -3194,7 +3194,7 @@
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_SASL_BIND;
       String message = getMessage(msgID, SASL_MECHANISM_PLAIN,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_ENCODING_ERROR,
                                 msgID, message, e);
     }
@@ -3218,28 +3218,28 @@
     catch (IOException ioe)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(ioe));
+      String message = getMessage(msgID, getExceptionMessage(ioe));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                 message, ioe);
     }
     catch (ASN1Exception ae)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(ae));
+      String message = getMessage(msgID, getExceptionMessage(ae));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                 msgID, message, ae);
     }
     catch (LDAPException le)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(le));
+      String message = getMessage(msgID, getExceptionMessage(le));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                 msgID, message, le);
     }
     catch (Exception e)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                 message, e);
     }
@@ -3381,7 +3381,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_LDAPAUTH_GSSAPI_CANNOT_CREATE_SASL_CLIENT;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                   message, e);
       }
@@ -3399,7 +3399,7 @@
         catch (Exception e)
         {
           int msgID = MSGID_LDAPAUTH_GSSAPI_CANNOT_CREATE_INITIAL_CHALLENGE;
-          String message = getMessage(msgID, stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, getExceptionMessage(e));
           throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR,
                                     msgID, message, e);
         }
@@ -3425,7 +3425,7 @@
       {
         int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_SASL_BIND;
         String message = getMessage(msgID, SASL_MECHANISM_GSSAPI,
-                                    stackTraceToSingleLineString(ioe));
+                                    getExceptionMessage(ioe));
         throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                   message, ioe);
       }
@@ -3433,7 +3433,7 @@
       {
         int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_SASL_BIND;
         String message = getMessage(msgID, SASL_MECHANISM_GSSAPI,
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new ClientException(LDAPResultCode.CLIENT_SIDE_ENCODING_ERROR,
                                   msgID, message, e);
       }
@@ -3458,28 +3458,28 @@
       catch (IOException ioe)
       {
         int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-        String message = getMessage(msgID, stackTraceToSingleLineString(ioe));
+        String message = getMessage(msgID, getExceptionMessage(ioe));
         throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                   message, ioe);
       }
       catch (ASN1Exception ae)
       {
         int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-        String message = getMessage(msgID, stackTraceToSingleLineString(ae));
+        String message = getMessage(msgID, getExceptionMessage(ae));
         throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                   msgID, message, ae);
       }
       catch (LDAPException le)
       {
         int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-        String message = getMessage(msgID, stackTraceToSingleLineString(le));
+        String message = getMessage(msgID, getExceptionMessage(le));
         throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                   msgID, message, le);
       }
       catch (Exception e)
       {
         int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                   message, e);
       }
@@ -3549,8 +3549,7 @@
             catch (Exception e)
             {
               int msgID = MSGID_LDAPAUTH_GSSAPI_CANNOT_VALIDATE_SERVER_CREDS;
-              String message = getMessage(msgID,
-                                          stackTraceToSingleLineString(e));
+              String message = getMessage(msgID, getExceptionMessage(e));
               throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR,
                                         msgID, message, e);
             }
@@ -3589,7 +3588,7 @@
           catch (Exception e)
           {
             int msgID = MSGID_LDAPAUTH_GSSAPI_CANNOT_VALIDATE_SERVER_CREDS;
-            String message = getMessage(msgID, stackTraceToSingleLineString(e));
+            String message = getMessage(msgID, getExceptionMessage(e));
             throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR,
                                       msgID, message, e);
           }
@@ -3612,7 +3611,7 @@
           {
             int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_SASL_BIND;
             String message = getMessage(msgID, SASL_MECHANISM_GSSAPI,
-                                        stackTraceToSingleLineString(ioe));
+                                        getExceptionMessage(ioe));
             throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN,
                                       msgID, message, ioe);
           }
@@ -3620,7 +3619,7 @@
           {
             int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_SASL_BIND;
             String message = getMessage(msgID, SASL_MECHANISM_GSSAPI,
-                                        stackTraceToSingleLineString(e));
+                                        getExceptionMessage(e));
             throw new ClientException(LDAPResultCode.CLIENT_SIDE_ENCODING_ERROR,
                                       msgID, message, e);
           }
@@ -3645,31 +3644,28 @@
           catch (IOException ioe)
           {
             int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-            String message = getMessage(msgID,
-                                        stackTraceToSingleLineString(ioe));
+            String message = getMessage(msgID, getExceptionMessage(ioe));
             throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN,
                                       msgID, message, ioe);
           }
           catch (ASN1Exception ae)
           {
             int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-            String message = getMessage(msgID,
-                                        stackTraceToSingleLineString(ae));
+            String message = getMessage(msgID, getExceptionMessage(ae));
             throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                       msgID, message, ae);
           }
           catch (LDAPException le)
           {
             int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-            String message = getMessage(msgID,
-                                        stackTraceToSingleLineString(le));
+            String message = getMessage(msgID, getExceptionMessage(le));
             throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                       msgID, message, le);
           }
           catch (Exception e)
           {
             int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_BIND_RESPONSE;
-            String message = getMessage(msgID, stackTraceToSingleLineString(e));
+            String message = getMessage(msgID, getExceptionMessage(e));
             throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR,
                                       msgID, message, e);
           }
@@ -3834,14 +3830,14 @@
     catch (IOException ioe)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_WHOAMI_REQUEST;
-      String message = getMessage(msgID, stackTraceToSingleLineString(ioe));
+      String message = getMessage(msgID, getExceptionMessage(ioe));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                 message, ioe);
     }
     catch (Exception e)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_SEND_WHOAMI_REQUEST;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_ENCODING_ERROR,
                                 msgID, message, e);
     }
@@ -3865,28 +3861,28 @@
     catch (IOException ioe)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_WHOAMI_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(ioe));
+      String message = getMessage(msgID, getExceptionMessage(ioe));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_SERVER_DOWN, msgID,
                                 message, ioe);
     }
     catch (ASN1Exception ae)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_WHOAMI_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(ae));
+      String message = getMessage(msgID, getExceptionMessage(ae));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                 msgID, message, ae);
     }
     catch (LDAPException le)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_WHOAMI_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(le));
+      String message = getMessage(msgID, getExceptionMessage(le));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_DECODING_ERROR,
                                 msgID, message, le);
     }
     catch (Exception e)
     {
       int    msgID   = MSGID_LDAPAUTH_CANNOT_READ_WHOAMI_RESPONSE;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new ClientException(LDAPResultCode.CLIENT_SIDE_LOCAL_ERROR, msgID,
                                 message, e);
     }
diff --git a/opends/src/server/org/opends/server/tools/LDAPCompare.java b/opends/src/server/org/opends/server/tools/LDAPCompare.java
index 85afc01..d0c4faf 100644
--- a/opends/src/server/org/opends/server/tools/LDAPCompare.java
+++ b/opends/src/server/org/opends/server/tools/LDAPCompare.java
@@ -45,13 +45,13 @@
 import org.opends.server.protocols.ldap.CompareRequestProtocolOp;
 import org.opends.server.protocols.ldap.CompareResponseProtocolOp;
 import org.opends.server.protocols.ldap.LDAPControl;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.protocols.ldap.LDAPMessage;
 import org.opends.server.protocols.ldap.ProtocolOp;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.types.NullOutputStream;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
 import org.opends.server.util.Base64;
 import org.opends.server.util.PasswordReader;
 import org.opends.server.util.args.ArgumentException;
@@ -61,8 +61,7 @@
 import org.opends.server.util.args.IntegerArgument;
 import org.opends.server.util.args.StringArgument;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ToolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPResultCode.*;
diff --git a/opends/src/server/org/opends/server/tools/LDAPConnection.java b/opends/src/server/org/opends/server/tools/LDAPConnection.java
index a7b5575..f8f1d84 100644
--- a/opends/src/server/org/opends/server/tools/LDAPConnection.java
+++ b/opends/src/server/org/opends/server/tools/LDAPConnection.java
@@ -44,14 +44,13 @@
 import org.opends.server.protocols.ldap.ExtendedRequestProtocolOp;
 import org.opends.server.protocols.ldap.ExtendedResponseProtocolOp;
 import org.opends.server.protocols.ldap.LDAPControl;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPMessage;
 import org.opends.server.protocols.ldap.UnbindRequestProtocolOp;
 import org.opends.server.types.Control;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.CoreMessages.
                    MSGID_RESULT_CLIENT_SIDE_CONNECT_ERROR;
@@ -68,7 +67,6 @@
  */
 public class LDAPConnection
 {
-
   // The hostname to connect to.
   private String hostName = null;
 
diff --git a/opends/src/server/org/opends/server/tools/LDAPDelete.java b/opends/src/server/org/opends/server/tools/LDAPDelete.java
index fd27c44..f4f1e2e 100644
--- a/opends/src/server/org/opends/server/tools/LDAPDelete.java
+++ b/opends/src/server/org/opends/server/tools/LDAPDelete.java
@@ -45,11 +45,11 @@
 import org.opends.server.protocols.ldap.DeleteRequestProtocolOp;
 import org.opends.server.protocols.ldap.DeleteResponseProtocolOp;
 import org.opends.server.protocols.ldap.LDAPControl;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPMessage;
 import org.opends.server.protocols.ldap.ProtocolOp;
 import org.opends.server.types.NullOutputStream;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
 import org.opends.server.util.PasswordReader;
 import org.opends.server.util.args.ArgumentException;
 import org.opends.server.util.args.ArgumentParser;
diff --git a/opends/src/server/org/opends/server/tools/LDAPModify.java b/opends/src/server/org/opends/server/tools/LDAPModify.java
index 13ecc0e..5c0c1f2 100644
--- a/opends/src/server/org/opends/server/tools/LDAPModify.java
+++ b/opends/src/server/org/opends/server/tools/LDAPModify.java
@@ -48,10 +48,8 @@
 import org.opends.server.protocols.ldap.DeleteResponseProtocolOp;
 import org.opends.server.protocols.ldap.LDAPAttribute;
 import org.opends.server.protocols.ldap.LDAPControl;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.protocols.ldap.LDAPMessage;
-import org.opends.server.protocols.ldap.LDAPModification;
 import org.opends.server.protocols.ldap.ModifyRequestProtocolOp;
 import org.opends.server.protocols.ldap.ModifyResponseProtocolOp;
 import org.opends.server.protocols.ldap.ModifyDNRequestProtocolOp;
@@ -59,10 +57,13 @@
 import org.opends.server.protocols.ldap.SearchResultEntryProtocolOp;
 import org.opends.server.protocols.ldap.ProtocolOp;
 import org.opends.server.types.Attribute;
+import org.opends.server.types.DebugLogLevel;
 import org.opends.server.types.DN;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.LDIFImportConfig;
 import org.opends.server.types.NullOutputStream;
-import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.RawAttribute;
+import org.opends.server.types.RawModification;
 import org.opends.server.util.AddChangeRecordEntry;
 import org.opends.server.util.ChangeRecordEntry;
 import org.opends.server.util.LDIFException;
@@ -278,8 +279,8 @@
           operationType = "ADD";
           AddChangeRecordEntry addEntry = (AddChangeRecordEntry) entry;
           List<Attribute> attrs = addEntry.getAttributes();
-          ArrayList<LDAPAttribute> attributes =
-              new ArrayList<LDAPAttribute>(attrs.size());
+          ArrayList<RawAttribute> attributes =
+              new ArrayList<RawAttribute>(attrs.size());
           for(Attribute a : attrs)
           {
             attributes.add(new LDAPAttribute(a));
@@ -297,8 +298,8 @@
         case MODIFY:
           operationType = "MODIFY";
           ModifyChangeRecordEntry modEntry = (ModifyChangeRecordEntry) entry;
-          ArrayList<LDAPModification> mods =
-            new ArrayList<LDAPModification>(modEntry.getModifications());
+          ArrayList<RawModification> mods =
+            new ArrayList<RawModification>(modEntry.getModifications());
           protocolOp = new ModifyRequestProtocolOp(asn1OctetStr, mods);
           msgID = MSGID_PROCESSING_OPERATION;
           out.println(getMessage(msgID, operationType, asn1OctetStr));
diff --git a/opends/src/server/org/opends/server/tools/LDAPSearch.java b/opends/src/server/org/opends/server/tools/LDAPSearch.java
index 1c4cbb5..c3c7ae4 100644
--- a/opends/src/server/org/opends/server/tools/LDAPSearch.java
+++ b/opends/src/server/org/opends/server/tools/LDAPSearch.java
@@ -60,7 +60,6 @@
 import org.opends.server.protocols.asn1.ASN1Sequence;
 import org.opends.server.protocols.ldap.LDAPAttribute;
 import org.opends.server.protocols.ldap.LDAPControl;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.protocols.ldap.LDAPMessage;
 import org.opends.server.protocols.ldap.SearchRequestProtocolOp;
@@ -68,11 +67,11 @@
 import org.opends.server.protocols.ldap.SearchResultEntryProtocolOp;
 import org.opends.server.protocols.ldap.SearchResultReferenceProtocolOp;
 import org.opends.server.types.DN;
-import org.opends.server.types.NullOutputStream;
 import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.LDAPException;
+import org.opends.server.types.NullOutputStream;
 
-import static org.opends.server.loggers.debug.DebugLogger.debugCaught;
-import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
+import static org.opends.server.loggers.debug.DebugLogger.*;
 import static org.opends.server.messages.MessageHandler.*;
 import static org.opends.server.messages.ToolMessages.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
diff --git a/opends/src/server/org/opends/server/tools/LDIFModify.java b/opends/src/server/org/opends/server/tools/LDIFModify.java
index b170478..df59346 100644
--- a/opends/src/server/org/opends/server/tools/LDIFModify.java
+++ b/opends/src/server/org/opends/server/tools/LDIFModify.java
@@ -39,8 +39,6 @@
 
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.extensions.ConfigFileHandler;
-import org.opends.server.protocols.ldap.LDAPException;
-import org.opends.server.protocols.ldap.LDAPModification;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
@@ -49,10 +47,12 @@
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
 import org.opends.server.types.ExistingFileBehavior;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.LDIFExportConfig;
 import org.opends.server.types.LDIFImportConfig;
 import org.opends.server.types.Modification;
 import org.opends.server.types.ObjectClass;
+import org.opends.server.types.RawModification;
 import org.opends.server.util.AddChangeRecordEntry;
 import org.opends.server.util.ChangeRecordEntry;
 import org.opends.server.util.DeleteChangeRecordEntry;
@@ -212,7 +212,7 @@
               modifications.put(changeDN, mods);
             }
 
-            for (LDAPModification mod :
+            for (RawModification mod :
                  ((ModifyChangeRecordEntry) changeRecord).getModifications())
             {
               try
diff --git a/opends/src/server/org/opends/server/tools/ListBackends.java b/opends/src/server/org/opends/server/tools/ListBackends.java
index 6a89d32..f87fbb8 100644
--- a/opends/src/server/org/opends/server/tools/ListBackends.java
+++ b/opends/src/server/org/opends/server/tools/ListBackends.java
@@ -255,7 +255,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_SERVER_BOOTSTRAP_ERROR;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -275,7 +275,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_LOAD_CONFIG;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -304,7 +304,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_LOAD_SCHEMA;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -327,7 +327,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_LISTBACKENDS_CANNOT_GET_BACKENDS;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       err.println(wrapText(message, MAX_LINE_WIDTH));
       return 1;
     }
@@ -371,8 +371,7 @@
         catch (Exception e)
         {
           int    msgID   = MSGID_LISTBACKENDS_INVALID_DN;
-          String message = getMessage(msgID, dnStr,
-                                      stackTraceToSingleLineString(e));
+          String message = getMessage(msgID, dnStr, getExceptionMessage(e));
           err.println(wrapText(message, MAX_LINE_WIDTH));
           return 1;
         }
@@ -547,7 +546,7 @@
     {
       int    msgID   = MSGID_CANNOT_DECODE_BACKEND_BASE_DN;
       String message = getMessage(msgID, DN_BACKEND_BASE,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new ConfigException(msgID, message, e);
     }
 
@@ -566,7 +565,7 @@
     {
       int    msgID   = MSGID_CANNOT_RETRIEVE_BACKEND_BASE_ENTRY;
       String message = getMessage(msgID, DN_BACKEND_BASE,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new ConfigException(msgID, message, e);
     }
 
@@ -607,7 +606,7 @@
       {
         int    msgID   = MSGID_CANNOT_DETERMINE_BACKEND_ID;
         String message = getMessage(msgID, String.valueOf(configEntry.getDN()),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new ConfigException(msgID, message, e);
       }
 
@@ -632,7 +631,7 @@
       {
         int    msgID   = MSGID_CANNOT_DETERMINE_BASES_FOR_BACKEND;
         String message = getMessage(msgID, String.valueOf(configEntry.getDN()),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new ConfigException(msgID, message, e);
       }
 
diff --git a/opends/src/server/org/opends/server/tools/RebuildIndex.java b/opends/src/server/org/opends/server/tools/RebuildIndex.java
index cea02f7..82b053a 100644
--- a/opends/src/server/org/opends/server/tools/RebuildIndex.java
+++ b/opends/src/server/org/opends/server/tools/RebuildIndex.java
@@ -192,7 +192,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_SERVER_BOOTSTRAP_ERROR;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       System.err.println(wrapText(message, MAX_LINE_WIDTH));
       System.exit(1);
     }
@@ -212,7 +212,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_CANNOT_LOAD_CONFIG;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       System.err.println(wrapText(message, MAX_LINE_WIDTH));
       System.exit(1);
     }
@@ -241,7 +241,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_CANNOT_LOAD_SCHEMA;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       System.err.println(wrapText(message, MAX_LINE_WIDTH));
       System.exit(1);
     }
@@ -270,7 +270,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_CANNOT_INITIALIZE_CORE_CONFIG;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       System.err.println(wrapText(message, MAX_LINE_WIDTH));
       System.exit(1);
     }
@@ -298,7 +298,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_CANNOT_INITIALIZE_CRYPTO_MANAGER;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       System.err.println(wrapText(message, MAX_LINE_WIDTH));
       System.exit(1);
     }
@@ -330,7 +330,7 @@
     {
       int    msgID   = MSGID_CANNOT_DECODE_BASE_DN;
       String message = getMessage(msgID, baseDNString.getValue(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR, message,
                msgID);
       System.exit(1);
@@ -423,7 +423,7 @@
     {
       int    msgID   = MSGID_REBUILDINDEX_CANNOT_EXCLUSIVE_LOCK_BACKEND;
       String message = getMessage(msgID, backend.getBackendID(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                message, msgID);
       return;
@@ -438,7 +438,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_REBUILDINDEX_ERROR_DURING_REBUILD;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR, message,
                msgID);
     }
@@ -462,10 +462,10 @@
       {
         int    msgID   = MSGID_REBUILDINDEX_CANNOT_UNLOCK_BACKEND;
         String message = getMessage(msgID, backend.getBackendID(),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_WARNING,
                  message, msgID);
       }
     }
   }
-}
\ No newline at end of file
+}
diff --git a/opends/src/server/org/opends/server/tools/RestoreDB.java b/opends/src/server/org/opends/server/tools/RestoreDB.java
index d60b412..81a7c59 100644
--- a/opends/src/server/org/opends/server/tools/RestoreDB.java
+++ b/opends/src/server/org/opends/server/tools/RestoreDB.java
@@ -228,7 +228,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_SERVER_BOOTSTRAP_ERROR;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -248,7 +248,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_LOAD_CONFIG;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -277,7 +277,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_LOAD_SCHEMA;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -306,7 +306,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_INITIALIZE_CORE_CONFIG;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -334,7 +334,7 @@
       catch (Exception e)
       {
         int    msgID   = MSGID_CANNOT_INITIALIZE_CRYPTO_MANAGER;
-        String message = getMessage(msgID, stackTraceToSingleLineString(e));
+        String message = getMessage(msgID, getExceptionMessage(e));
         System.err.println(wrapText(message, MAX_LINE_WIDTH));
         return 1;
       }
@@ -359,7 +359,7 @@
     {
       int    msgID   = MSGID_RESTOREDB_CANNOT_READ_BACKUP_DIRECTORY;
       String message = getMessage(msgID, backupDirectory.getValue(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR, message,
                msgID);
       return 1;
@@ -538,7 +538,7 @@
     {
       int    msgID   = MSGID_RESTOREDB_CANNOT_LOCK_BACKEND;
       String message = getMessage(msgID, backend.getBackendID(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                message, msgID);
       return 0;
@@ -562,7 +562,7 @@
     {
       int    msgID   = MSGID_RESTOREDB_ERROR_DURING_BACKUP;
       String message = getMessage(msgID, backupID, backupDir.getPath(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                message, msgID);
     }
@@ -586,7 +586,7 @@
     {
       int    msgID   = MSGID_RESTOREDB_CANNOT_UNLOCK_BACKEND;
       String message = getMessage(msgID, backend.getBackendID(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_WARNING,
                message, msgID);
     }
diff --git a/opends/src/server/org/opends/server/tools/StopDS.java b/opends/src/server/org/opends/server/tools/StopDS.java
index 7a7f416..47c0182 100644
--- a/opends/src/server/org/opends/server/tools/StopDS.java
+++ b/opends/src/server/org/opends/server/tools/StopDS.java
@@ -53,12 +53,13 @@
 import org.opends.server.protocols.ldap.LDAPAttribute;
 import org.opends.server.protocols.ldap.LDAPConstants;
 import org.opends.server.protocols.ldap.LDAPControl;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPMessage;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.tasks.ShutdownTask;
 import org.opends.server.types.Control;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.NullOutputStream;
+import org.opends.server.types.RawAttribute;
 import org.opends.server.util.args.Argument;
 import org.opends.server.util.args.ArgumentException;
 import org.opends.server.util.args.ArgumentParser;
@@ -644,7 +645,7 @@
          new ASN1OctetString(ATTR_TASK_ID + "=" + taskID + "," +
                              SCHEDULED_TASK_BASE_RDN + "," + DN_TASK_ROOT);
 
-    ArrayList<LDAPAttribute> attributes = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attributes = new ArrayList<RawAttribute>();
 
     ArrayList<ASN1OctetString> ocValues = new ArrayList<ASN1OctetString>(3);
     ocValues.add(new ASN1OctetString("top"));
diff --git a/opends/src/server/org/opends/server/tools/VerifyIndex.java b/opends/src/server/org/opends/server/tools/VerifyIndex.java
index 62394bc..fdd86bf 100644
--- a/opends/src/server/org/opends/server/tools/VerifyIndex.java
+++ b/opends/src/server/org/opends/server/tools/VerifyIndex.java
@@ -206,7 +206,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_SERVER_BOOTSTRAP_ERROR;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       System.err.println(wrapText(message, MAX_LINE_WIDTH));
       System.exit(1);
     }
@@ -226,7 +226,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_CANNOT_LOAD_CONFIG;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       System.err.println(wrapText(message, MAX_LINE_WIDTH));
       System.exit(1);
     }
@@ -255,7 +255,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_CANNOT_LOAD_SCHEMA;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       System.err.println(wrapText(message, MAX_LINE_WIDTH));
       System.exit(1);
     }
@@ -284,7 +284,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_CANNOT_INITIALIZE_CORE_CONFIG;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       System.err.println(wrapText(message, MAX_LINE_WIDTH));
       System.exit(1);
     }
@@ -312,7 +312,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_CANNOT_INITIALIZE_CRYPTO_MANAGER;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       System.err.println(wrapText(message, MAX_LINE_WIDTH));
       System.exit(1);
     }
@@ -344,7 +344,7 @@
     {
       int    msgID   = MSGID_CANNOT_DECODE_BASE_DN;
       String message = getMessage(msgID, baseDNString.getValue(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR, message,
                msgID);
       System.exit(1);
@@ -449,7 +449,7 @@
     {
       int    msgID   = MSGID_VERIFYINDEX_CANNOT_LOCK_BACKEND;
       String message = getMessage(msgID, backend.getBackendID(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR,
                message, msgID);
       return;
@@ -465,7 +465,7 @@
     catch (Exception e)
     {
       int    msgID   = MSGID_VERIFYINDEX_ERROR_DURING_VERIFY;
-      String message = getMessage(msgID, stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_ERROR, message,
                msgID);
     }
@@ -489,9 +489,9 @@
     {
       int    msgID   = MSGID_VERIFYINDEX_CANNOT_UNLOCK_BACKEND;
       String message = getMessage(msgID, backend.getBackendID(),
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.SEVERE_WARNING,
                message, msgID);
     }
   }
-}
\ No newline at end of file
+}
diff --git a/opends/src/server/org/opends/server/types/BackupDirectory.java b/opends/src/server/org/opends/server/types/BackupDirectory.java
index 9613355..c16ad45 100644
--- a/opends/src/server/org/opends/server/types/BackupDirectory.java
+++ b/opends/src/server/org/opends/server/types/BackupDirectory.java
@@ -329,7 +329,7 @@
 
         int msgID = MSGID_BACKUPDIRECTORY_CANNOT_CREATE_DIRECTORY;
         String message = getMessage(msgID, path,
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new IOException(message);
       }
     }
@@ -404,7 +404,7 @@
           int msgID =
               MSGID_BACKUPDIRECTORY_CANNOT_DELETE_SAVED_DESCRIPTOR;
           String message = getMessage(msgID, savedDescriptorFilePath,
-                                      stackTraceToSingleLineString(e),
+                                      getExceptionMessage(e),
                                       newDescriptorFilePath,
                                       descriptorFilePath);
           throw new IOException(message);
@@ -426,7 +426,7 @@
             MSGID_BACKUPDIRECTORY_CANNOT_RENAME_CURRENT_DESCRIPTOR;
         String message = getMessage(msgID, descriptorFilePath,
                                     savedDescriptorFilePath,
-                                    stackTraceToSingleLineString(e),
+                                    getExceptionMessage(e),
                                     newDescriptorFilePath);
         throw new IOException(message);
       }
@@ -448,7 +448,7 @@
       int msgID = MSGID_BACKUPDIRECTORY_CANNOT_RENAME_NEW_DESCRIPTOR;
       String message = getMessage(msgID, newDescriptorFilePath,
                                   descriptorFilePath,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new IOException(message);
     }
   }
@@ -525,7 +525,7 @@
     {
       int    msgID   = MSGID_BACKUPDIRECTORY_CANNOT_DECODE_DN;
       String message = getMessage(msgID, dnString,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new ConfigException(msgID, message, e);
     }
 
diff --git a/opends/src/server/org/opends/server/types/BackupInfo.java b/opends/src/server/org/opends/server/types/BackupInfo.java
index ecab161..34e0e77 100644
--- a/opends/src/server/org/opends/server/types/BackupInfo.java
+++ b/opends/src/server/org/opends/server/types/BackupInfo.java
@@ -600,7 +600,7 @@
 
       int msgID = MSGID_BACKUPINFO_CANNOT_DECODE;
       String message = getMessage(msgID, backupPath,
-                                  stackTraceToSingleLineString(e));
+                                  getExceptionMessage(e));
       throw new ConfigException(msgID, message, e);
     }
 
diff --git a/opends/src/server/org/opends/server/types/CryptoManager.java b/opends/src/server/org/opends/server/types/CryptoManager.java
index 3efd59a..451eaa0 100644
--- a/opends/src/server/org/opends/server/types/CryptoManager.java
+++ b/opends/src/server/org/opends/server/types/CryptoManager.java
@@ -129,7 +129,7 @@
       // FIXME -- Number this.
       throw new InitializationException(-1,
                      "Can't get preferred digest:  " +
-                     stackTraceToSingleLineString(e), e);
+                     getExceptionMessage(e), e);
     }
 
     try
@@ -147,7 +147,7 @@
       // FIXME -- Number this.
       throw new InitializationException(-1,
                      "Can't get preferred MAC provider:  " +
-                     stackTraceToSingleLineString(e), e);
+                     getExceptionMessage(e), e);
     }
 
     try
@@ -165,7 +165,7 @@
       // FIXME -- Number this.
       throw new InitializationException(-1,
                      "Can't get preferred cipher:  " +
-                     stackTraceToSingleLineString(e), e);
+                     getExceptionMessage(e), e);
     }
   }
 
diff --git a/opends/src/server/org/opends/server/types/Entry.java b/opends/src/server/org/opends/server/types/Entry.java
index 6c83a53..92e7de6 100644
--- a/opends/src/server/org/opends/server/types/Entry.java
+++ b/opends/src/server/org/opends/server/types/Entry.java
@@ -2798,7 +2798,7 @@
               String message =
                    getMessage(msgID, String.valueOf(dn),
                               ditStructureRule.getNameOrRuleID(),
-                              stackTraceToSingleLineString(e));
+                              getExceptionMessage(e));
 
               if (structuralPolicy == AcceptRejectWarn.REJECT)
               {
@@ -2909,7 +2909,7 @@
                    MSGID_ENTRY_SCHEMA_COULD_NOT_CHECK_PARENT_DSR;
               String message =
                    getMessage(msgID, String.valueOf(dn),
-                              stackTraceToSingleLineString(e));
+                              getExceptionMessage(e));
 
               if (structuralPolicy == AcceptRejectWarn.REJECT)
               {
@@ -4420,8 +4420,7 @@
       }
 
       int    msgID   = MSGID_ENTRY_DECODE_EXCEPTION;
-      String message = getMessage(msgID,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new DirectoryException(
                      DirectoryServer.getServerErrorResultCode(),
                      message, msgID, e);
diff --git a/opends/src/server/org/opends/server/types/IdentifiedException.java b/opends/src/server/org/opends/server/types/IdentifiedException.java
index 9b1df50..99d4d59 100644
--- a/opends/src/server/org/opends/server/types/IdentifiedException.java
+++ b/opends/src/server/org/opends/server/types/IdentifiedException.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ *      Portions Copyright 2007 Sun Microsystems, Inc.
  */
 package org.opends.server.types;
 
diff --git a/opends/src/server/org/opends/server/types/IntermediateResponse.java b/opends/src/server/org/opends/server/types/IntermediateResponse.java
index f52bd9b..5f6161e 100644
--- a/opends/src/server/org/opends/server/types/IntermediateResponse.java
+++ b/opends/src/server/org/opends/server/types/IntermediateResponse.java
@@ -32,7 +32,6 @@
 import java.util.Iterator;
 import java.util.List;
 
-import org.opends.server.core.Operation;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 
 
diff --git a/opends/src/server/org/opends/server/protocols/ldap/LDAPException.java b/opends/src/server/org/opends/server/types/LDAPException.java
similarity index 77%
rename from opends/src/server/org/opends/server/protocols/ldap/LDAPException.java
rename to opends/src/server/org/opends/server/types/LDAPException.java
index 931244d..da50c74 100644
--- a/opends/src/server/org/opends/server/protocols/ldap/LDAPException.java
+++ b/opends/src/server/org/opends/server/types/LDAPException.java
@@ -24,28 +24,23 @@
  *
  *      Portions Copyright 2006-2007 Sun Microsystems, Inc.
  */
-package org.opends.server.protocols.ldap;
-
-
-
-import org.opends.server.types.DN;
-import org.opends.server.types.IdentifiedException;
+package org.opends.server.types;
 
 
 
 /**
- * This class defines an exception that may be thrown if a problem occurs while
- * interacting with an LDAP protocol element.
+ * This class defines an exception that may be thrown if a problem
+ * occurs while interacting with an LDAP protocol element.
  */
 public class LDAPException
        extends IdentifiedException
 {
   /**
-   * The serial version identifier required to satisfy the compiler because this
-   * class extends <CODE>java.lang.Exception</CODE>, which implements the
-   * <CODE>java.io.Serializable</CODE> interface.  This value was generated
-   * using the <CODE>serialver</CODE> command-line utility included with the
-   * Java SDK.
+   * The serial version identifier required to satisfy the compiler
+   * because this class extends {@code java.lang.Exception}, which
+   * implements the {@code java.io.Serializable} interface.  This
+   * value was generated using the {@code serialver} command-line
+   * utility included with the Java SDK.
    */
   private static final long serialVersionUID = -7273984376022613884L;
 
@@ -54,7 +49,8 @@
   // The matched DN associated with this LDAP exception.
   private final DN matchedDN;
 
-  // The message ID for the message associated with this LDAP exception.
+  // The message ID for the message associated with this LDAP
+  // exception.
   private final int messageID;
 
   // The LDAP result code associated with this exception.
@@ -68,9 +64,12 @@
   /**
    * Creates a new LDAP exception with the provided message.
    *
-   * @param  resultCode  The LDAP result code associated with this exception.
-   * @param  messageID   The unique identifier for the associated message.
-   * @param  message     The message that explains the problem that occurred.
+   * @param  resultCode  The LDAP result code associated with this
+   *                     exception.
+   * @param  messageID   The unique identifier for the associated
+   *                     message.
+   * @param  message     The message that explains the problem that
+   *                     occurred.
    */
   public LDAPException(int resultCode, int messageID, String message)
   {
@@ -88,13 +87,16 @@
   /**
    * Creates a new LDAP exception with the provided message.
    *
-   * @param  resultCode    The LDAP result code associated with this exception.
+   * @param  resultCode    The LDAP result code associated with this
+   *                       exception.
    * @param  errorMessage  The server-provided error message.
-   * @param  messageID     The unique identifier for the associated message.
-   * @param  message       The message that explains the problem that occurred.
+   * @param  messageID     The unique identifier for the associated
+   *                       message.
+   * @param  message       The message that explains the problem that
+   *                       occurred.
    */
-  public LDAPException(int resultCode, String errorMessage, int messageID,
-                       String message)
+  public LDAPException(int resultCode, String errorMessage,
+                       int messageID, String message)
   {
     super(message);
 
@@ -108,11 +110,15 @@
 
 
   /**
-   * Creates a new LDAP exception with the provided message and root cause.
+   * Creates a new LDAP exception with the provided message and root
+   * cause.
    *
-   * @param  resultCode  The LDAP result code associated with this exception.
-   * @param  messageID   The unique identifier for the associated message.
-   * @param  message     The message that explains the problem that occurred.
+   * @param  resultCode  The LDAP result code associated with this
+   *                     exception.
+   * @param  messageID   The unique identifier for the associated
+   *                     message.
+   * @param  message     The message that explains the problem that
+   *                     occurred.
    * @param  cause       The exception that was caught to trigger this
    *                     exception.
    */
@@ -131,17 +137,21 @@
 
 
   /**
-   * Creates a new LDAP exception with the provided message and root cause.
+   * Creates a new LDAP exception with the provided message and root
+   * cause.
    *
-   * @param  resultCode    The LDAP result code associated with this exception.
-   * @param  errorMessage  The server-provided error message.
-   * @param  messageID     The unique identifier for the associated message.
-   * @param  message       The message that explains the problem that occurred.
-   * @param  cause         The exception that was caught to trigger this
+   * @param  resultCode    The LDAP result code associated with this
    *                       exception.
+   * @param  errorMessage  The server-provided error message.
+   * @param  messageID     The unique identifier for the associated
+   *                       message.
+   * @param  message       The message that explains the problem that
+   *                       occurred.
+   * @param  cause         The exception that was caught to trigger
+   *                       this exception.
    */
-  public LDAPException(int resultCode, String errorMessage, int messageID,
-                       String message, Throwable cause)
+  public LDAPException(int resultCode, String errorMessage,
+                       int messageID, String message, Throwable cause)
   {
     super(message, cause);
 
@@ -155,18 +165,23 @@
 
 
   /**
-   * Creates a new LDAP exception with the provided message and root cause.
+   * Creates a new LDAP exception with the provided message and root
+   * cause.
    *
-   * @param  resultCode    The LDAP result code associated with this exception.
-   * @param  errorMessage  The server-provided error message.
-   * @param  messageID     The unique identifier for the associated message.
-   * @param  message       The message that explains the problem that occurred.
-   * @param  matchedDN     The matched DN returned by the server.
-   * @param  cause         The exception that was caught to trigger this
+   * @param  resultCode    The LDAP result code associated with this
    *                       exception.
+   * @param  errorMessage  The server-provided error message.
+   * @param  messageID     The unique identifier for the associated
+   *                       message.
+   * @param  message       The message that explains the problem that
+   *                       occurred.
+   * @param  matchedDN     The matched DN returned by the server.
+   * @param  cause         The exception that was caught to trigger
+   *                       this exception.
    */
-  public LDAPException(int resultCode, String errorMessage, int messageID,
-                       String message, DN matchedDN, Throwable cause)
+  public LDAPException(int resultCode, String errorMessage,
+                       int messageID, String message, DN matchedDN,
+                       Throwable cause)
   {
     super(message, cause);
 
@@ -218,8 +233,8 @@
   /**
    * Retrieves the matched DN for this exception.
    *
-   * @return  The matched DN for this exception, or {@code null} if there is
-   *          none.
+   * @return  The matched DN for this exception, or {@code null} if
+   *          there is none.
    */
   public DN getMatchedDN()
   {
diff --git a/opends/src/server/org/opends/server/types/LDAPURL.java b/opends/src/server/org/opends/server/types/LDAPURL.java
index 21a80ab..c312cfa 100644
--- a/opends/src/server/org/opends/server/types/LDAPURL.java
+++ b/opends/src/server/org/opends/server/types/LDAPURL.java
@@ -857,8 +857,7 @@
 
       // This should never happen.
       int    msgID   = MSGID_LDAPURL_CANNOT_CREATE_UTF8_STRING;
-      String message = getMessage(msgID,
-                                  stackTraceToSingleLineString(e));
+      String message = getMessage(msgID, getExceptionMessage(e));
       throw new DirectoryException(
                      ResultCode.INVALID_ATTRIBUTE_SYNTAX, message,
                      msgID);
diff --git a/opends/src/server/org/opends/server/core/Operation.java b/opends/src/server/org/opends/server/types/Operation.java
similarity index 61%
rename from opends/src/server/org/opends/server/core/Operation.java
rename to opends/src/server/org/opends/server/types/Operation.java
index d22ba24..2e53740 100644
--- a/opends/src/server/org/opends/server/core/Operation.java
+++ b/opends/src/server/org/opends/server/types/Operation.java
@@ -24,7 +24,7 @@
  *
  *      Portions Copyright 2006-2007 Sun Microsystems, Inc.
  */
-package org.opends.server.core;
+package org.opends.server.types;
 
 
 
@@ -34,15 +34,7 @@
 import java.util.Map;
 
 import org.opends.server.api.ClientConnection;
-import org.opends.server.types.CancelRequest;
-import org.opends.server.types.CancelResult;
-import org.opends.server.types.Control;
-import org.opends.server.types.DisconnectReason;
-import org.opends.server.types.DN;
-import org.opends.server.types.DirectoryException;
-import org.opends.server.types.Entry;
-import org.opends.server.types.OperationType;
-import org.opends.server.types.ResultCode;
+import org.opends.server.core.DirectoryServer;
 import org.opends.server.types.operation.PostOperationOperation;
 import org.opends.server.types.operation.PostResponseOperation;
 import org.opends.server.types.operation.PreOperationOperation;
@@ -54,20 +46,23 @@
 
 
 /**
- * This class defines a generic operation that may be processed by the Directory
- * Server.  Specific subclasses should implement specific functionality
- * appropriate for the type of operation.
+ * This class defines a generic operation that may be processed by the
+ * Directory Server.  Specific subclasses should implement specific
+ * functionality appropriate for the type of operation.
+ * <BR><BR>
+ * Note that this class is not intended to be subclassed by any
+ * third-party code outside of the OpenDS project.  It should only be
+ * extended by the operation types included in the
+ * {@code org.opends.server.core} package.
  */
 public abstract class Operation
        implements PreParseOperation, PreOperationOperation,
-                  PostOperationOperation, PostResponseOperation, Runnable
+                  PostOperationOperation, PostResponseOperation,
+                  Runnable
 {
-
-
-
   /**
-   * The set of response controls that will always be returned for an abandon
-   * operation.
+   * The set of response controls that will always be returned for an
+   * abandon operation.
    */
   protected static final List<Control> NO_RESPONSE_CONTROLS =
        new ArrayList<Control>(0);
@@ -95,12 +90,12 @@
 
 
 
-  // Indicates whether this is an internal operation triggered within the server
-  // itself rather than requested by an external client.
+  // Indicates whether this is an internal operation triggered within
+  // the server itself rather than requested by an external client.
   private boolean isInternalOperation;
 
-  // Indicates whether this operation is involved in data synchronization
-  // processing.
+  // Indicates whether this operation is involved in data
+  // synchronization processing.
   private boolean isSynchronizationOperation;
 
   // The cancel result for this operation.
@@ -112,8 +107,8 @@
   // The entry for the authorization identify for this operation.
   private Entry authorizationEntry;
 
-  // A set of attachments associated with this operation that might be used by
-  // various components during its processing.
+  // A set of attachments associated with this operation that might be
+  // used by various components during its processing.
   private Map<String,Object> attachments;
 
   // The set of controls included in the request from the client.
@@ -125,12 +120,12 @@
   // The result code for this operation.
   private ResultCode resultCode;
 
-  // Additional information that should be included in the log but not sent to
-  // the client.
+  // Additional information that should be included in the log but not
+  // sent to the client.
   private StringBuilder additionalLogMessage;
 
-  // The error message for this operation that should be included in the log and
-  // in the response to the client.
+  // The error message for this operation that should be included in
+  // the log and in the response to the client.
   private StringBuilder errorMessage;
 
   // Indicates whether this operation nneds to be synchronized to
@@ -142,16 +137,18 @@
   /**
    * Creates a new operation with the provided information.
    *
-   * @param  clientConnection  The client connection with which this operation
-   *                           is associated.
-   * @param  operationID       The identifier assigned to this operation for
-   *                           the client connection.
-   * @param  messageID         The message ID of the request with which this
+   * @param  clientConnection  The client connection with which this
    *                           operation is associated.
-   * @param  requestControls   The set of controls included in the request.
+   * @param  operationID       The identifier assigned to this
+   *                           operation for the client connection.
+   * @param  messageID         The message ID of the request with
+   *                           which this operation is associated.
+   * @param  requestControls   The set of controls included in the
+   *                           request.
    */
-  protected Operation(ClientConnection clientConnection, long operationID,
-                      int messageID, List<Control> requestControls)
+  protected Operation(ClientConnection clientConnection,
+                      long operationID, int messageID,
+                      List<Control> requestControls)
   {
     this.clientConnection = clientConnection;
     this.operationID      = operationID;
@@ -176,7 +173,8 @@
     isInternalOperation        = false;
     isSynchronizationOperation = false;
     authorizationEntry         =
-         clientConnection.getAuthenticationInfo().getAuthorizationEntry();
+         clientConnection.getAuthenticationInfo().
+              getAuthorizationEntry();
   }
 
 
@@ -191,76 +189,83 @@
 
 
   /**
-   * Terminates the client connection being used to process this operation.  The
-   * plugin must return a result indicating that the client connection has been
+   * Terminates the client connection being used to process this
+   * operation.  If this is called by a plugin, then that plugin must
+   * return a result indicating that the  client connection has been
    * teriminated.
    *
-   * @param  disconnectReason  The disconnect reason that provides the generic
-   *                           cause for the disconnect.
-   * @param  sendNotification  Indicates whether to try to provide notification
-   *                           to the client that the connection will be closed.
-   * @param  message           The message to send to the client.  It may be
-   *                           <CODE>null</CODE> if no notification is to be
+   * @param  disconnectReason  The disconnect reason that provides the
+   *                           generic cause for the disconnect.
+   * @param  sendNotification  Indicates whether to try to provide
+   *                           notification
+   *                           to the client that the connection will
+   *                           be closed.
+   * @param  message           The message to send to the client.  It
+   *                           may be {@code null} if no notification
+   *                           is to be sent.
+   * @param  messageID         The unique identifier associated with
+   *                           the message to send to the client.  It
+   *                           may be -1 if no notification is to be
    *                           sent.
-   * @param  messageID         The unique identifier associated with the message
-   *                           to send to the client.  It may be -1 if no
-   *                           notification is to be sent.
    */
-  public abstract void disconnectClient(DisconnectReason disconnectReason,
-                                        boolean sendNotification,
-                                        String message, int messageID);
+  public abstract void disconnectClient(
+                            DisconnectReason disconnectReason,
+                            boolean sendNotification, String message,
+                            int messageID);
 
 
 
   /**
-   * Retrieves a set of standard elements that should be logged in all requests
-   * and responses for all types of operations.  Each element in the array will
-   * itself be a two-element array in which the first element is the name of the
-   * field and the second is a string representation of the value, or
-   * <CODE>null</CODE> if there is no value for that field.
+   * Retrieves a set of standard elements that should be logged in all
+   * requests and responses for all types of operations.  Each element
+   * in the array will itself be a two-element array in which the
+   * first element is the name of the field and the second is a string
+   * representation of the value, or {@code null} if there is no value
+   * for that field.
    *
-   * @return  A standard set of elements that should be logged in requests and
-   *          responses for all types of operations.
+   * @return  A standard set of elements that should be logged in
+   *          requests and responses for all types of operations.
    */
   public final String[][] getCommonLogElements()
   {
-    // Note that no debugging will be done in this method because it is a likely
-    // candidate for being called by the logging subsystem.
-
     return new String[][]
     {
       new String[] { LOG_ELEMENT_CONNECTION_ID,
                      String.valueOf(getConnectionID()) },
-      new String[] { LOG_ELEMENT_OPERATION_ID, String.valueOf(operationID) },
-      new String[] { LOG_ELEMENT_MESSAGE_ID, String.valueOf(messageID) }
+      new String[] { LOG_ELEMENT_OPERATION_ID,
+                     String.valueOf(operationID) },
+      new String[] { LOG_ELEMENT_MESSAGE_ID,
+                     String.valueOf(messageID) }
     };
   }
 
 
 
   /**
-   * Retrieves a standard set of elements that should be logged in requests for
-   * this type of operation.  Each element in the array will itself be a
-   * two-element array in which the first element is the name of the field and
-   * the second is a string representation of the value, or <CODE>null</CODE> if
-   * there is no value for that field.
+   * Retrieves a standard set of elements that should be logged in
+   * requests for this type of operation.  Each element in the array
+   * will itself be a two-element array in which the first element is
+   * the name of the field and the second is a string representation
+   * of the value, or {@code null} if there is no value for that
+   * field.
    *
-   * @return  A standard set of elements that should be logged in requests for
-   *          this type of operation.
+   * @return  A standard set of elements that should be logged in
+   *          requests for this type of operation.
    */
   public abstract String[][] getRequestLogElements();
 
 
 
   /**
-   * Retrieves a standard set of elements that should be logged in responses for
-   * this type of operation.  Each element in the array will itself be a
-   * two-element array in which the first element is the name of the field and
-   * the second is a string representation of the value, or <CODE>null</CODE> if
-   * there is no value for that field.
+   * Retrieves a standard set of elements that should be logged in
+   * responses for this type of operation.  Each element in the array
+   * will itself be a two-element array in which the first element is
+   * the name of the field and the second is a string representation
+   * of the value, or {@code null} if there is no value for that
+   * field.
    *
-   * @return  A standard set of elements that should be logged in responses for
-   *          this type of operation.
+   * @return  A standard set of elements that should be logged in
+   *          responses for this type of operation.
    */
   public abstract String[][] getResponseLogElements();
 
@@ -268,9 +273,11 @@
 
 
   /**
-   * Retrieves the client connection with which this operation is associated.
+   * Retrieves the client connection with which this operation is
+   * associated.
    *
-   * @return  The client connection with which this operation is associated.
+   * @return  The client connection with which this operation is
+   *          associated.
    */
   public final ClientConnection getClientConnection()
   {
@@ -280,11 +287,11 @@
 
 
   /**
-   * Retrieves the unique identifier that is assigned to the client connection
-   * that submitted this operation.
+   * Retrieves the unique identifier that is assigned to the client
+   * connection that submitted this operation.
    *
-   * @return  The unique identifier that is assigned to the client connection
-   *          that submitted this operation.
+   * @return  The unique identifier that is assigned to the client
+   *          connection that submitted this operation.
    */
   public final long getConnectionID()
   {
@@ -318,10 +325,11 @@
 
 
   /**
-   * Retrieves the set of controls included in the request from the client.
-   * The returned list must not be altered.
+   * Retrieves the set of controls included in the request from the
+   * client.  The returned list must not be altered.
    *
-   * @return  The set of controls included in the request from the client.
+   * @return  The set of controls included in the request from the
+   *          client.
    */
   public final List<Control> getRequestControls()
   {
@@ -334,8 +342,8 @@
    * Adds the provided control to the set of request controls for this
    * operation.  This method may only be called by pre-parse plugins.
    *
-   * @param  control  The control to add to the set of request controls for this
-   *                  operation.
+   * @param  control  The control to add to the set of request
+   *                  controls for this operation.
    */
   public final void addRequestControl(Control control)
   {
@@ -345,11 +353,12 @@
 
 
   /**
-   * Removes the provided control from the set of request controls for this
-   * operation.  This method may only be called by pre-parse plugins.
+   * Removes the provided control from the set of request controls for
+   * this operation.  This method may only be called by pre-parse
+   * plugins.
    *
-   * @param  control  The control to remove from the set of request controls for
-   *                  this operation.
+   * @param  control  The control to remove from the set of request
+   *                  controls for this operation.
    */
   public final void removeRequestControl(Control control)
   {
@@ -359,33 +368,35 @@
 
 
   /**
-   * Retrieves the set of controls to include in the response to the client.
-   * The contents of this list must not be altered.
+   * Retrieves the set of controls to include in the response to the
+   * client.  The contents of this list must not be altered.
    *
-   * @return  The set of controls to include in the response to the client.
+   * @return  The set of controls to include in the response to the
+   *          client.
    */
   public abstract List<Control> getResponseControls();
 
 
 
   /**
-   * Adds the provided control to the set of controls to include in the response
-   * to the client.  This method may not be called by post-response plugins.
+   * Adds the provided control to the set of controls to include in
+   * the response to the client.  This method may not be called by
+   * post-response plugins.
    *
-   * @param  control  The control to add to the set of controls to include in
-   *                  the response to the client.
+   * @param  control  The control to add to the set of controls to
+   *                  include in the response to the client.
    */
   public abstract void addResponseControl(Control control);
 
 
 
   /**
-   * Removes the provided control from the set of controls to include in the
-   * response to the client.  This method may not be called by post-response
-   * plugins.
+   * Removes the provided control from the set of controls to include
+   * in the response to the client.  This method may not be called by
+   * post-response plugins.
    *
-   * @param  control  The control to remove from the set of controls to include
-   *                  in the response to the client.
+   * @param  control  The control to remove from the set of controls
+   *                  to include in the response to the client.
    */
   public abstract void removeResponseControl(Control control);
 
@@ -395,7 +406,8 @@
    * Retrieves the result code for this operation.
    *
    * @return  The result code associated for this operation, or
-   *          <CODE>UNDEFINED</CODE> if the operation has not yet completed.
+   *          {@code UNDEFINED} if the operation has not yet
+   *          completed.
    */
   public final ResultCode getResultCode()
   {
@@ -405,8 +417,8 @@
 
 
   /**
-   * Specifies the result code for this operation.  This method may not be
-   * called by post-response plugins.
+   * Specifies the result code for this operation.  This method may
+   * not be called by post-response plugins.
    *
    * @param  resultCode  The result code for this operation.
    */
@@ -418,9 +430,9 @@
 
 
   /**
-   * Retrieves the error message for this operation.  Its contents may be
-   * altered by pre-parse, pre-operation, and post-operation plugins, but not
-   * by post-response plugins.
+   * Retrieves the error message for this operation.  Its contents may
+   * be altered by pre-parse, pre-operation, and post-operation
+   * plugins, but not by post-response plugins.
    *
    * @return  The error message for this operation.
    */
@@ -432,8 +444,8 @@
 
 
   /**
-   * Specifies the error message for this operation.  This method may not be
-   * called by post-response plugins.
+   * Specifies the error message for this operation.  This method may
+   * not be called by post-response plugins.
    *
    * @param  errorMessage  The error message for this operation.
    */
@@ -452,11 +464,13 @@
 
 
   /**
-   * Appends the provided message to the error message buffer.  If the buffer
-   * has not yet been created, then this will create it first and then add the
-   * provided message.  This method may not be called by post-response plugins.
+   * Appends the provided message to the error message buffer.  If the
+   * buffer has not yet been created, then this will create it first
+   * and then add the provided message.  This method may not be called
+   * by post-response plugins.
    *
-   * @param  message  The message to append to the error message buffer.
+   * @param  message  The message to append to the error message
+   *                  buffer.
    */
   public final void appendErrorMessage(String message)
   {
@@ -478,10 +492,11 @@
 
 
   /**
-   * Retrieves the additional log message for this operation, which should be
-   * written to the log but not included in the response to the client.  The
-   * contents of this buffer may be altered by pre-parse, pre-operation, and
-   * post-operation plugins, but not by post-response plugins.
+   * Retrieves the additional log message for this operation, which
+   * should be written to the log but not included in the response to
+   * the client.  The contents of this buffer may be altered by
+   * pre-parse, pre-operation, and post-operation plugins, but not by
+   * post-response plugins.
    *
    * @return  The additional log message for this operation.
    */
@@ -493,14 +508,16 @@
 
 
   /**
-   * Specifies the additional log message for this operation, which should be
-   * written to the log but not included in the response to the client.  This
-   * method may not be called by post-response plugins.
+   * Specifies the additional log message for this operation, which
+   * should be written to the log but not included in the response to
+   * the client.  This method may not be called by post-response
+   * plugins.
    *
    * @param  additionalLogMessage  The additional log message for this
    *                               operation.
    */
-  public final void setAdditionalLogMessage(StringBuilder additionalLogMessage)
+  public final void setAdditionalLogMessage(StringBuilder
+                                                 additionalLogMessage)
   {
     if (additionalLogMessage == null)
     {
@@ -515,11 +532,12 @@
 
 
   /**
-   * Appends the provided message to the additional log information for this
-   * operation.  This method may not be called by post-response plugins.
+   * Appends the provided message to the additional log information
+   * for this operation.  This method may not be called by
+   * post-response plugins.
    *
-   * @param  message  The message that should be appended to the additional log
-   *                  information for this operation.
+   * @param  message  The message that should be appended to the
+   *                  additional log information for this operation.
    */
   public final void appendAdditionalLogMessage(String message)
   {
@@ -538,8 +556,9 @@
   /**
    * Retrieves the matched DN for this operation.
    *
-   * @return  The matched DN for this operation, or <CODE>null</CODE> if the
-   *          operation has not yet completed or does not have a matched DN.
+   * @return  The matched DN for this operation, or {@code null} if
+   *          the operation has not yet completed or does not have a
+   *          matched DN.
    */
   public final DN getMatchedDN()
   {
@@ -549,8 +568,8 @@
 
 
   /**
-   * Specifies the matched DN for this operation.  This may not be called by
-   * post-response plugins.
+   * Specifies the matched DN for this operation.  This may not be
+   * called by post-response plugins.
    *
    * @param  matchedDN  The matched DN for this operation.
    */
@@ -562,12 +581,12 @@
 
 
   /**
-   * Retrieves the set of referral URLs for this operation.  Its contents must
-   * not be altered by the caller.
+   * Retrieves the set of referral URLs for this operation.  Its
+   * contents must not be altered by the caller.
    *
-   * @return  The set of referral URLs for this operation, or <CODE>null</CODE>
-   *          if the operation is not yet complete or does not have a set of
-   *          referral URLs.
+   * @return  The set of referral URLs for this operation, or
+   *          {@code null} if the operation is not yet complete or
+   *          does not have a set of referral URLs.
    */
   public final List<String> getReferralURLs()
   {
@@ -577,10 +596,11 @@
 
 
   /**
-   * Specifies the set of referral URLs for this operation.  This may not be
-   * called by post-response plugins.
+   * Specifies the set of referral URLs for this operation.  This may
+   * not be called by post-response plugins.
    *
-   * @param  referralURLs  The set of referral URLs for this operation.
+   * @param  referralURLs  The set of referral URLs for this
+   *                       operation.
    */
   public final void setReferralURLs(List<String> referralURLs)
   {
@@ -590,14 +610,16 @@
 
 
   /**
-   * Sets the response elements for this operation based on the information
-   * contained in the provided <CODE>DirectoryException</CODE> object.  This
-   * method may not be called by post-response plugins.
+   * Sets the response elements for this operation based on the
+   * information contained in the provided {@code DirectoryException}
+   * object.  This method may not be called by post-response plugins.
    *
-   * @param  directoryException  The exception containing the information to use
-   *                             for the response elements.
+   * @param  directoryException  The exception containing the
+   *                             information to use for the response
+   *                             elements.
    */
-  public final void setResponseData(DirectoryException directoryException)
+  public final void setResponseData(
+                         DirectoryException directoryException)
   {
     this.resultCode   = directoryException.getResultCode();
     this.matchedDN    = directoryException.getMatchedDN();
@@ -609,11 +631,11 @@
 
 
   /**
-   * Indicates whether this is an internal operation rather than one that was
-   * requested by an external client.
+   * Indicates whether this is an internal operation rather than one
+   * that was requested by an external client.
    *
-   * @return  <CODE>true</CODE> if this is an internal operation, or
-   *          <CODE>false</CODE> if it is not.
+   * @return  {@code true} if this is an internal operation, or
+   *          {@code false} if it is not.
    */
   public final boolean isInternalOperation()
   {
@@ -623,13 +645,14 @@
 
 
   /**
-   * Specifies whether this is an internal operation rather than one that was
-   * requested by an external client.  This may not be called from within a
-   * plugin.
+   * Specifies whether this is an internal operation rather than one
+   * that was requested by an external client.  This may not be called
+   * from within a plugin.
    *
-   * @param  isInternalOperation  Specifies whether this is an internal
-   *                              operation rather than one that was requested
-   *                              by an external client.
+   * @param  isInternalOperation  Specifies whether this is an
+   *                              internal operation rather than one
+   *                              that was requested by an external
+   *                              client.
    */
   public final void setInternalOperation(boolean isInternalOperation)
   {
@@ -639,11 +662,11 @@
 
 
   /**
-   * Indicates whether this is a synchronization operation rather than one that
-   * was requested by an external client.
+   * Indicates whether this is a synchronization operation rather than
+   * one that was requested by an external client.
    *
-   * @return  <CODE>true</CODE> if this is a data synchronization operation, or
-   *          <CODE>false</CODE> if it is not.
+   * @return  {@code true} if this is a data synchronization
+   *          operation, or {@code false} if it is not.
    */
   public final boolean isSynchronizationOperation()
   {
@@ -653,13 +676,14 @@
 
 
   /**
-   * Specifies whether this is a synchronization operation rather than one that
-   * was requested by an external client.  This method may not be called from
-   * within a plugin.
+   * Specifies whether this is a synchronization operation rather than
+   * one that was requested by an external client.  This method may
+   * not be called from within a plugin.
    *
    * @param  isSynchronizationOperation  Specifies whether this is a
-   *                                     synchronization operation rather than
-   *                                     one that was requested by an external
+   *                                     synchronization operation
+   *                                     rather than one that was
+   *                                     requested by an external
    *                                     client.
    */
   public final void setSynchronizationOperation(
@@ -670,8 +694,8 @@
 
 
   /**
-   * Specifies whether this operation must be synchronized to other copies
-   * of the data.
+   * Specifies whether this operation must be synchronized to other
+   * copies of the data.
    *
    * @param  dontSynchronize  Specifies whether this operation must be
    *                          synchronized to other copies
@@ -684,17 +708,19 @@
 
   /**
    * Retrieves the entry for the user that should be considered the
-   * authorization identity for this operation.  In many cases, it will be the
-   * same as the authorization entry for the underlying client connection, or
-   * {@code null} if no authentication has been performed on that connection.
-   * However, it may be some other value if special processing has been
-   * requested (e.g., the operation included a proxied authorization control).
-   * This method should not be called by pre-parse plugins because the correct
+   * authorization identity for this operation.  In many cases, it
+   * will be the same as the authorization entry for the underlying
+   * client connection, or {@code null} if no authentication has been
+   * performed on that connection.  However, it may be some other
+   * value if special processing has been requested (e.g., the
+   * operation included a proxied authorization control).  This method
+   * should not be called by pre-parse plugins because the correct
    * value may not yet have been determined.
    *
-   * @return  The entry for the user that should be considered the authorization
-   *          identity for this operation, or {@code null} if the authorization
-   *          identity should be the unauthenticated  user.
+   * @return  The entry for the user that should be considered the
+   *          authorization identity for this operation, or
+   *          {@code null} if the authorization identity should be the
+   *          unauthenticated  user.
    */
   public final Entry getAuthorizationEntry()
   {
@@ -704,13 +730,15 @@
 
 
   /**
-   * Provides the entry for the user that should be considered the authorization
-   * identity for this operation.  This must not be called from within a plugin.
+   * Provides the entry for the user that should be considered the
+   * authorization identity for this operation.  This must not be
+   * called from within a plugin.
    *
    * @param  authorizationEntry  The entry for the user that should be
-   *                             considered the authorization identity for this
-   *                             operation, or {@code null} if it should be the
-   *                             unauthenticated user.
+   *                             considered the authorization identity
+   *                             for this operation, or {@code null}
+   *                             if it should be the unauthenticated
+   *                             user.
    */
   public final void setAuthorizationEntry(Entry authorizationEntry)
   {
@@ -720,16 +748,17 @@
 
 
   /**
-   * Retrieves the authorization DN for this operation.  In many cases, it will
-   * be the same as the DN of the authenticated user for the underlying
-   * connection, or the null DN if no authentication has been performed on that
-   * connection.  However, it may be some other value if special processing has
-   * been requested (e.g., the operation included a proxied authorization
-   * control).  This method should not be called by pre-parse plugins because
-   * the correct value may not have yet been determined.
+   * Retrieves the authorization DN for this operation.  In many
+   * cases, it will be the same as the DN of the authenticated user
+   * for the underlying connection, or the null DN if no
+   * authentication has been performed on that connection.  However,
+   * it may be some other value if special processing has been
+   * requested (e.g., the operation included a proxied authorization
+   * control).  This method should not be called by pre-parse plugins
+   * because the correct value may not have yet been determined.
    *
-   * @return  The authorization DN for this operation, or the null DN if it
-   *          should be the unauthenticated user..
+   * @return  The authorization DN for this operation, or the null DN
+   *          if it should be the unauthenticated user..
    */
   public final DN getAuthorizationDN()
   {
@@ -746,8 +775,8 @@
 
 
   /**
-   * Retrieves the set of attachments defined for this operation, as a mapping
-   * between the attachment name and the associated object.
+   * Retrieves the set of attachments defined for this operation, as a
+   * mapping between the attachment name and the associated object.
    *
    * @return  The set of attachments defined for this operation.
    */
@@ -761,11 +790,11 @@
   /**
    * Retrieves the attachment with the specified name.
    *
-   * @param  name  The name for the attachment to retrieve.  It will be treated
-   *               in a case-sensitive manner.
+   * @param  name  The name for the attachment to retrieve.  It will
+   *               be treated in a case-sensitive manner.
    *
-   * @return  The requested attachment object, or <CODE>null</CODE> if it does
-   *          not exist.
+   * @return  The requested attachment object, or {@code null} if it
+   *          does not exist.
    */
   public final Object getAttachment(String name)
   {
@@ -777,11 +806,11 @@
   /**
    * Removes the attachment with the specified name.
    *
-   * @param  name  The name for the attachment to remove.  It will be treated in
-   *               a case-sensitive manner.
+   * @param  name  The name for the attachment to remove.  It will be
+   *               treated in a case-sensitive manner.
    *
-   * @return  The attachment that was removed, or <CODE>null</CODE> if it does
-   *          not exist.
+   * @return  The attachment that was removed, or {@code null} if it
+   *          does not exist.
    */
   public final Object removeAttachment(String name)
   {
@@ -791,15 +820,16 @@
 
 
   /**
-   * Sets the value of the specified attachment.  If an attachment already
-   * exists with the same name, it will be replaced.  Otherwise, a new
-   * attachment will be added.
+   * Sets the value of the specified attachment.  If an attachment
+   * already exists with the same name, it will be replaced.
+   * Otherwise, a new attachment will be added.
    *
    * @param  name   The name to use for the attachment.
    * @param  value  The value to use for the attachment.
    *
-   * @return  The former value held by the attachment with the given name, or
-   *          <CODE>null</CODE> if there was previously no such attachment.
+   * @return  The former value held by the attachment with the given
+   *          name, or {@code null} if there was previously no such
+   *          attachment.
    */
   public final Object setAttachment(String name, Object value)
   {
@@ -818,9 +848,9 @@
 
 
   /**
-   * Retrieves the time that processing stopped for this operation.  This will
-   * actually hold a time immediately before the response was sent to the
-   * client.
+   * Retrieves the time that processing stopped for this operation.
+   * This will actually hold a time immediately before the response
+   * was sent to the client.
    *
    * @return  The time that processing stopped for this operation.
    */
@@ -829,9 +859,9 @@
 
 
   /**
-   * Retrieves the length of time in milliseconds that the server spent
-   * processing this operation.  This should not be called until after the
-   * server has sent the response to the client.
+   * Retrieves the length of time in milliseconds that the server
+   * spent processing this operation.  This should not be called until
+   * after the server has sent the response to the client.
    *
    * @return  The length of time in milliseconds that the server spent
    *          processing this operation.
@@ -841,63 +871,71 @@
 
 
   /**
-   * Performs the work of actually processing this operation.  This should
-   * include all processing for the operation, including invoking plugins,
-   * logging messages, performing access control, managing synchronization, and
-   * any other work that might need to be done in the course of processing.
+   * Performs the work of actually processing this operation.  This
+   * should include all processing for the operation, including
+   * invoking plugins, logging messages, performing access control,
+   * managing synchronization, and any other work that might need to
+   * be done in the course of processing.
    */
   public abstract void run();
 
 
 
   /**
-   * Indicates that processing on this operation has completed successfully and
-   * that the client should perform any associated cleanup work.
+   * Indicates that processing on this operation has completed
+   * successfully and that the client should perform any associated
+   * cleanup work.
    */
   public final void operationCompleted()
   {
-    // Notify the client connection that this operation is complete and that it
-    // no longer needs to be retained.
+    // Notify the client connection that this operation is complete
+    // and that it no longer needs to be retained.
     clientConnection.removeOperationInProgress(messageID);
   }
 
 
 
   /**
-   * Attempts to cancel this operation before processing has completed.
+   * Attempts to cancel this operation before processing has
+   * completed.
    *
-   * @param  cancelRequest  Information about the way in which the operation
-   *                        should be canceled.
+   * @param  cancelRequest  Information about the way in which the
+   *                        operation should be canceled.
    *
-   * @return  A code providing information on the result of the cancellation.
+   * @return  A code providing information on the result of the
+   *          cancellation.
    */
   public abstract CancelResult cancel(CancelRequest cancelRequest);
 
 
 
   /**
-   * Sets the cancel request for this operation, if applicable.  This should
-   * only be used for testing purposes (e.g., for ensuring a cancel request is
-   * submitted before processing begins on an operation, or to allow for
-   * cancelling an internal operation).
+   * Sets the cancel request for this operation, if applicable.  This
+   * should only be used for testing purposes (e.g., for ensuring a
+   * cancel request is submitted before processing begins on an
+   * operation, or to allow for cancelling an internal operation).  It
+   * must not be used for any other purpose.
    *
-   * @param  cancelRequest  The cancel request to set for this operation.
+   * @param  cancelRequest  The cancel request to set for this
+   *                        operation.
    *
-   * @return  <CODE>true</CODE> if the cancel request was set, or
-   *          <CODE>false</CODE> if it was not for some reason (e.g., the
+   * @return  {@code true} if the cancel request was set, or
+   *          {@code false} if it was not for some reason (e.g., the
    *          specified operation cannot be cancelled).
    */
-  abstract boolean setCancelRequest(CancelRequest cancelRequest);
+  protected abstract boolean setCancelRequest(CancelRequest
+                                                   cancelRequest);
 
 
 
   /**
-   * Retrieves the cancel request that has been issued for this operation, if
-   * there is one.  This method should not be called by post-operation or
-   * post-response plugins.
+   * Retrieves the cancel request that has been issued for this
+   * operation, if there is one.  This method should not be called by
+   * post-operation or post-response plugins.
    *
-   * @return  The cancel request that has been issued for this operation, or
-   *          <CODE>null</CODE> if there has not been any request to cancel.
+   * @return  The cancel request that has been issued for this
+   *          operation, or {@code null} if there has not been any
+   *          request to cancel.
    */
   public abstract CancelRequest getCancelRequest();
 
@@ -907,8 +945,8 @@
    * Retrieves the cancel result for this operation.
    *
    * @return  The cancel result for this operation.  It will be
-   *          <CODE>null</CODE> if the operation has not seen and reacted to a
-   *          cancel request.
+   *          {@code null} if the operation has not seen and reacted
+   *          to a cancel request.
    */
   public final CancelResult getCancelResult()
   {
@@ -930,11 +968,11 @@
 
 
   /**
-   * Indicates that this operation has been cancelled.  If appropriate, it will
-   * send a response to the client to indicate that.  This method must not be
-   * called by abandon, bind, or unbind operations under any circumstances, nor
-   * by extended operations if the request OID is that of the cancel or the
-   * StartTLS operation.
+   * Indicates that this operation has been cancelled.  If
+   * appropriate, it will send a response to the client to indicate
+   * that.  This method must not be called by abandon, bind, or unbind
+   * operations under any circumstances, nor by extended operations if
+   * the request OID is that of the cancel or the StartTLS operation.
    *
    * @param  cancelRequest  The request to cancel this operation.
    */
@@ -974,14 +1012,16 @@
 
 
   /**
-   * Appends a string representation of this operation to the provided buffer.
+   * Appends a string representation of this operation to the provided
+   * buffer.
    *
-   * @param  buffer  The buffer into which a string representation of this
-   *                 operation should be appended.
+   * @param  buffer  The buffer into which a string representation of
+   *                 this operation should be appended.
    */
   public abstract void toString(StringBuilder buffer);
 
 
+
   /**
    * Indicates whether this operation needs to be synchronized to
    * other copies of the data.
diff --git a/opends/src/server/org/opends/server/types/RawAttribute.java b/opends/src/server/org/opends/server/types/RawAttribute.java
new file mode 100644
index 0000000..583aef6
--- /dev/null
+++ b/opends/src/server/org/opends/server/types/RawAttribute.java
@@ -0,0 +1,370 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License").  You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ * add the following below this CDDL HEADER, with the fields enclosed
+ * by brackets "[]" replaced with your own identifying information:
+ *      Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ *      Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ */
+package org.opends.server.types;
+
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.opends.server.protocols.asn1.ASN1Element;
+import org.opends.server.protocols.asn1.ASN1OctetString;
+import org.opends.server.protocols.asn1.ASN1Sequence;
+import org.opends.server.protocols.asn1.ASN1Set;
+import org.opends.server.protocols.ldap.LDAPAttribute;
+
+import static org.opends.server.loggers.debug.DebugLogger.*;
+import static org.opends.server.messages.MessageHandler.*;
+import static org.opends.server.messages.ProtocolMessages.*;
+import static org.opends.server.protocols.ldap.LDAPResultCode.*;
+import static org.opends.server.util.Validator.*;
+
+
+
+/**
+ * This class defines a raw attribute, which has a type (which may
+ * include zero or more options), and zero or more values.  It is an
+ * unprocessed element, so it will not have undergone any syntax or
+ * other forms of validity checking.
+ */
+public abstract class RawAttribute
+{
+  /**
+   * Creates a new raw attribute with the provided type and no values.
+   *
+   * @param  attributeType  The attribute type for this attribute.  It
+   *                        must not be {@code null}.
+   *
+   * @return  The created raw attribute.
+   */
+  public static RawAttribute create(String attributeType)
+  {
+    ensureNotNull(attributeType);
+
+    return new LDAPAttribute(attributeType);
+  }
+
+
+
+  /**
+   * Creates a new raw attribute with the provided type value.
+   *
+   * @param  attributeType  The attribute type for this attribute.  It
+   *                        must not be {@code null}.
+   * @param  value          The value to use for this attribute.  It
+   *                        must not be {@code null}.
+   *
+   * @return  The created raw attribute.
+   */
+  public static RawAttribute create(String attributeType,
+                                    String value)
+  {
+    ensureNotNull(attributeType, value);
+
+    return new LDAPAttribute(attributeType, value);
+  }
+
+
+
+  /**
+   * Creates a new raw attribute with the provided type value.
+   *
+   * @param  attributeType  The attribute type for this attribute.  It
+   *                        must not be {@code null}.
+   * @param  value          The value to use for this attribute.  It
+   *                        must not be {@code null}.
+   *
+   * @return  The created raw attribute.
+   */
+  public static RawAttribute create(String attributeType,
+                                    ByteString value)
+  {
+    ensureNotNull(attributeType);
+
+    return new LDAPAttribute(attributeType,
+                             value.toASN1OctetString());
+  }
+
+
+
+  /**
+   * Creates a new raw attribute with the provided type and values.
+   *
+   * @param  attributeType  The attribute type for this attribute.  It
+   *                        must not be {@code null}.
+   * @param  values         The set of values for this attribute.
+   *
+   * @return  The created raw attribute.
+   */
+  public static RawAttribute create(String attributeType,
+                                    List<ByteString> values)
+  {
+    ensureNotNull(attributeType);
+
+    return new LDAPAttribute(attributeType, convertValues(values));
+  }
+
+
+
+  /**
+   * Creates a new raw attribute from the provided attribute.
+   *
+   * @param  attribute  The attribute to use to create this raw
+   *                    attribute.  It must not be {@code null}.
+   *
+   * @return  The created raw attribute.
+   */
+  public static RawAttribute create(Attribute attribute)
+  {
+    ensureNotNull(attribute);
+
+    return new LDAPAttribute(attribute);
+  }
+
+
+
+  /**
+   * Converts the provided <CODE>List&lt;ByteString&gt;</CODE> to an
+   * <CODE>ArrayList&lt;ASN1OctetString&gt;</CODE>.
+   *
+   * @param  values  The list to be converted.
+   *
+   * @return  The converted {@code ArrayList} object.
+   */
+  private static ArrayList<ASN1OctetString>
+                      convertValues(List<ByteString> values)
+  {
+    if (values == null)
+    {
+      return null;
+    }
+
+    ArrayList<ASN1OctetString> convertedList =
+         new ArrayList<ASN1OctetString>(values.size());
+    for (ByteString s : values)
+    {
+      convertedList.add(s.toASN1OctetString());
+    }
+
+    return convertedList;
+  }
+
+
+
+  /**
+   * Retrieves the attribute type for this attribute.
+   *
+   * @return  The attribute type for this attribute.
+   */
+  public abstract String getAttributeType();
+
+
+
+  /**
+   * Specifies the attribute type for this attribute.
+   *
+   * @param  attributeType  The attribute type for this attribute.
+   */
+  public abstract void setAttributeType(String attributeType);
+
+
+
+  /**
+   * Retrieves the set of values for this attribute.  The returned
+   * list may be modified by the caller.
+   *
+   * @return  The set of values for this attribute.
+   */
+  public abstract ArrayList<ASN1OctetString> getValues();
+
+
+
+  /**
+   * Retrieves a core attribute containing the information for this
+   * raw attribute.
+   *
+   * @return  A core attribute containing the information for this raw
+   *          attribute.
+   *
+   * @throws  LDAPException  If the provided value is invalid
+   *                         according to the attribute syntax.
+   */
+  public abstract Attribute toAttribute()
+         throws LDAPException;
+
+
+
+  /**
+   * Encodes this attribute to an ASN.1 element.
+   *
+   * @return  The ASN.1 element containing the encoded attribute.
+   */
+  public final ASN1Element encode()
+  {
+    ArrayList<ASN1Element> elements = new ArrayList<ASN1Element>(2);
+    elements.add(new ASN1OctetString(getAttributeType()));
+
+    ArrayList<ASN1OctetString> values = getValues();
+    if ((values == null) || values.isEmpty())
+    {
+      elements.add(new ASN1Set());
+    }
+    else
+    {
+      elements.add(new ASN1Set(new ArrayList<ASN1Element>(values)));
+    }
+
+    return new ASN1Sequence(elements);
+  }
+
+
+
+  /**
+   * Decodes the provided ASN.1 element as an LDAP attribute.
+   *
+   * @param  element  The ASN.1 element to decode.
+   *
+   * @return  The decoded LDAP attribute.
+   *
+   * @throws  LDAPException  If a problem occurs while trying to
+   *                         decode the provided ASN.1 element as a
+   *                         raw attribute.
+   */
+  public static LDAPAttribute decode(ASN1Element element)
+         throws LDAPException
+  {
+    ArrayList<ASN1Element> elements;
+    try
+    {
+      elements = element.decodeAsSequence().elements();
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int msgID = MSGID_LDAP_ATTRIBUTE_DECODE_SEQUENCE;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    int numElements = elements.size();
+    if (numElements != 2)
+    {
+      int msgID = MSGID_LDAP_ATTRIBUTE_DECODE_INVALID_ELEMENT_COUNT;
+      String message = getMessage(msgID, numElements);
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message);
+    }
+
+
+    String attributeType;
+    try
+    {
+      attributeType =
+           elements.get(0).decodeAsOctetString().stringValue();
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int msgID = MSGID_LDAP_ATTRIBUTE_DECODE_TYPE;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    ArrayList<ASN1OctetString> values;
+    try
+    {
+      ArrayList<ASN1Element> valueElements =
+           elements.get(1).decodeAsSet().elements();
+      values = new ArrayList<ASN1OctetString>(valueElements.size());
+      for (ASN1Element e : valueElements)
+      {
+        values.add(e.decodeAsOctetString());
+      }
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int msgID = MSGID_LDAP_ATTRIBUTE_DECODE_VALUES;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+    return new LDAPAttribute(attributeType, values);
+  }
+
+
+
+  /**
+   * Retrieves a string representation of this attribute.
+   *
+   * @return  A string representation of this attribute.
+   */
+  public String toString()
+  {
+    StringBuilder buffer = new StringBuilder();
+    toString(buffer);
+    return buffer.toString();
+  }
+
+
+
+  /**
+   * Appends a string representation of this attribute to the provided
+   * buffer.
+   *
+   * @param  buffer  The buffer to which the information should be
+   *                 appended.
+   */
+  public abstract void toString(StringBuilder buffer);
+
+
+
+  /**
+   * Appends a multi-line string representation of this LDAP attribute
+   * to the provided buffer.
+   *
+   * @param  buffer  The buffer to which the information should be
+   *                 appended.
+   * @param  indent  The number of spaces from the margin that the
+   *                 lines should be indented.
+   */
+  public abstract void toString(StringBuilder buffer, int indent);
+}
+
diff --git a/opends/src/server/org/opends/server/types/RawFilter.java b/opends/src/server/org/opends/server/types/RawFilter.java
new file mode 100644
index 0000000..950cf00
--- /dev/null
+++ b/opends/src/server/org/opends/server/types/RawFilter.java
@@ -0,0 +1,1303 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License").  You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ * add the following below this CDDL HEADER, with the fields enclosed
+ * by brackets "[]" replaced with your own identifying information:
+ *      Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ *      Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ */
+package org.opends.server.types;
+
+
+
+import java.util.ArrayList;
+
+import org.opends.server.protocols.asn1.ASN1Boolean;
+import org.opends.server.protocols.asn1.ASN1Element;
+import org.opends.server.protocols.asn1.ASN1OctetString;
+import org.opends.server.protocols.asn1.ASN1Sequence;
+import org.opends.server.protocols.asn1.ASN1Set;
+import org.opends.server.protocols.ldap.LDAPFilter;
+
+import static org.opends.server.loggers.debug.DebugLogger.*;
+import static org.opends.server.messages.MessageHandler.*;
+import static org.opends.server.messages.ProtocolMessages.*;
+import static org.opends.server.protocols.ldap.LDAPConstants.*;
+import static org.opends.server.protocols.ldap.LDAPResultCode.*;
+import static org.opends.server.util.StaticUtils.*;
+
+
+
+/**
+ * This class defines the data structures and methods to use when
+ * interacting with a raw search filter, which defines a set of
+ * criteria for locating entries in a search request.
+ */
+public abstract class RawFilter
+{
+  /**
+   * Creates a new LDAP filter from the provided filter string.
+   *
+   * @param  filterString  The filter string to use to create this raw
+   *                       filter.
+   *
+   * @return  The raw filter decoded from the provided filter string.
+   *
+   * @throws  LDAPException  If the provied filter string could not be
+   *                         decoded as a raw filter.
+   */
+  public static RawFilter create(String filterString)
+         throws LDAPException
+  {
+    return LDAPFilter.decode(filterString);
+  }
+
+
+
+  /**
+   * Creates a new LDAP filter from the provided search filter.
+   *
+   * @param  filter  The search filter to use to create this raw
+   *                 filter.
+   *
+   * @return  The constructed raw filter.
+   */
+  public static RawFilter create(SearchFilter filter)
+  {
+    return new LDAPFilter(filter);
+  }
+
+
+
+  /**
+   * Creates a new AND search filter with the provided filter
+   * components.
+   *
+   * @param  filterComponents  The filter components for this AND
+   *                           filter.
+   *
+   * @return  The AND search filter with the provided filter
+   *          components.
+   */
+  public static LDAPFilter createANDFilter(ArrayList<RawFilter>
+                                                filterComponents)
+  {
+    return new LDAPFilter(FilterType.AND, filterComponents, null,
+                          null, null, null, null, null, null, false);
+  }
+
+
+
+  /**
+   * Creates a new OR search filter with the provided filter
+   * components.
+   *
+   * @param  filterComponents  The filter components for this OR
+   *                           filter.
+   *
+   * @return  The OR search filter with the provided filter
+   *          components.
+   */
+  public static LDAPFilter createORFilter(ArrayList<RawFilter>
+                                               filterComponents)
+  {
+    return new LDAPFilter(FilterType.OR, filterComponents, null, null,
+                          null, null, null, null, null, false);
+  }
+
+
+
+  /**
+   * Creates a new NOT search filter with the provided filter
+   * component.
+   *
+   * @param  notComponent  The filter component for this NOT filter.
+   *
+   * @return  The NOT search filter with the provided filter
+   *          component.
+   */
+  public static LDAPFilter createNOTFilter(RawFilter notComponent)
+  {
+    return new LDAPFilter(FilterType.NOT, null, notComponent, null,
+                          null, null, null, null, null, false);
+  }
+
+
+
+  /**
+   * Creates a new equality search filter with the provided
+   * information.
+   *
+   * @param  attributeType   The attribute type for this equality
+   *                         filter.
+   * @param  assertionValue  The assertion value for this equality
+   *                         filter.
+   *
+   * @return  The constructed equality search filter.
+   */
+  public static LDAPFilter createEqualityFilter(String attributeType,
+                                ByteString assertionValue)
+  {
+    return new LDAPFilter(FilterType.EQUALITY, null, null,
+                          attributeType, assertionValue, null, null,
+                          null, null, false);
+  }
+
+
+
+  /**
+   * Creates a new substring search filter with the provided
+   * information.
+   *
+   * @param  attributeType      The attribute type for this substring
+   *                            filter.
+   * @param  subInitialElement  The subInitial element for this
+   *                            substring filter.
+   * @param  subAnyElements     The subAny elements for this substring
+   *                            filter.
+   * @param  subFinalElement    The subFinal element for this
+   *                            substring filter.
+   *
+   * @return  The constructed substring search filter.
+   */
+  public static LDAPFilter createSubstringFilter(String attributeType,
+                                ByteString subInitialElement,
+                                ArrayList<ByteString> subAnyElements,
+                                ByteString subFinalElement)
+  {
+    return new LDAPFilter(FilterType.SUBSTRING, null, null,
+                          attributeType, null, subInitialElement,
+                          subAnyElements, subFinalElement, null,
+                          false);
+  }
+
+
+
+  /**
+   * Creates a new greater or equal search filter with the provided
+   * information.
+   *
+   * @param  attributeType   The attribute type for this greater or
+   *                         equal filter.
+   * @param  assertionValue  The assertion value for this greater or
+   *                         equal filter.
+   *
+   * @return  The constructed greater or equal search filter.
+   */
+  public static LDAPFilter createGreaterOrEqualFilter(
+                                String attributeType,
+                                ByteString assertionValue)
+  {
+    return new LDAPFilter(FilterType.GREATER_OR_EQUAL, null, null,
+                          attributeType, assertionValue, null, null,
+                          null, null, false);
+  }
+
+
+
+  /**
+   * Creates a new less or equal search filter with the provided
+   * information.
+   *
+   * @param  attributeType   The attribute type for this less or equal
+   *                         filter.
+   * @param  assertionValue  The assertion value for this less or
+   *                         equal filter.
+   *
+   * @return  The constructed less or equal search filter.
+   */
+  public static LDAPFilter createLessOrEqualFilter(
+                                String attributeType,
+                                ByteString assertionValue)
+  {
+    return new LDAPFilter(FilterType.LESS_OR_EQUAL, null, null,
+                          attributeType, assertionValue, null, null,
+                          null, null, false);
+  }
+
+
+
+  /**
+   * Creates a new presence search filter with the provided attribute
+   * type.
+   *
+   * @param  attributeType  The attribute type for this presence
+   *                        filter.
+   *
+   * @return  The constructed presence search filter.
+   */
+  public static LDAPFilter createPresenceFilter(String attributeType)
+  {
+    return new LDAPFilter(FilterType.PRESENT, null, null,
+                          attributeType, null, null, null, null, null,
+                          false);
+  }
+
+
+
+  /**
+   * Creates a new approximate search filter with the provided
+   * information.
+   *
+   * @param  attributeType   The attribute type for this approximate
+   *                         filter.
+   * @param  assertionValue  The assertion value for this approximate
+   *                         filter.
+   *
+   * @return  The constructed approximate search filter.
+   */
+  public static LDAPFilter createApproximateFilter(
+                                String attributeType,
+                                ByteString assertionValue)
+  {
+    return new LDAPFilter(FilterType.APPROXIMATE_MATCH, null, null,
+                          attributeType, assertionValue, null, null,
+                          null, null, false);
+  }
+
+
+
+  /**
+   * Creates a new extensible matching search filter with the provided
+   * information.
+   *
+   * @param  matchingRuleID  The matching rule ID for this extensible
+   *                         filter.
+   * @param  attributeType   The attribute type for this extensible
+   *                         filter.
+   * @param  assertionValue  The assertion value for this extensible
+   *                         filter.
+   * @param  dnAttributes    The dnAttributes flag for this extensible
+   *                         filter.
+   *
+   * @return  The constructed extensible matching search filter.
+   */
+  public static LDAPFilter createExtensibleFilter(
+                                String matchingRuleID,
+                                String attributeType,
+                                ByteString assertionValue,
+                                boolean dnAttributes)
+  {
+    return new LDAPFilter(FilterType.EXTENSIBLE_MATCH, null, null,
+                          attributeType, assertionValue, null, null,
+                          null, matchingRuleID, dnAttributes);
+  }
+
+
+
+  /**
+   * Retrieves the filter type for this search filter.
+   *
+   * @return  The filter type for this search filter.
+   */
+  public abstract FilterType getFilterType();
+
+
+
+  /**
+   * Retrieves the set of subordinate filter components for AND or OR
+   * searches.  The contents of the returned list may be altered by
+   * the caller.
+   *
+   * @return  The set of subordinate filter components for AND and OR
+   *          searches, or {@code null} if this is not an AND or OR
+   *          search.
+   */
+  public abstract ArrayList<RawFilter> getFilterComponents();
+
+
+
+  /**
+   * Specifies the set of subordinate filter components for AND or OR
+   * searches.  This will be ignored for all other filter types.
+   *
+   * @param  filterComponents  The set of subordinate filter
+   *                           components for AND or OR searches.
+   */
+  public abstract void setFilterComponents(
+                            ArrayList<RawFilter> filterComponents);
+
+
+
+  /**
+   * Retrieves the subordinate filter component for NOT searches.
+   *
+   * @return  The subordinate filter component for NOT searches, or
+   *          {@code null} if this is not a NOT search.
+   */
+  public abstract RawFilter getNOTComponent();
+
+
+
+  /**
+   * Specifies the subordinate filter component for NOT searches.
+   * This will be ignored for any other type of search.
+   *
+   * @param  notComponent  The subordinate filter component for NOT
+   *                       searches.
+   */
+  public abstract void setNOTComponent(RawFilter notComponent);
+
+
+
+  /**
+   * Retrieves the attribute type for this search filter.  This will
+   * not be applicable for AND, OR, or NOT filters.
+   *
+   * @return  The attribute type for this search filter, or
+   *          {@code null} if there is none.
+   */
+  public abstract String getAttributeType();
+
+
+
+  /**
+   * Specifies the attribute type for this search filter.  This will
+   * be ignored for AND, OR, and NOT searches.
+   *
+   * @param  attributeType  The attribute type for this search filter.
+   */
+  public abstract void setAttributeType(String attributeType);
+
+
+
+  /**
+   * Retrieves the assertion value for this search filter.  This will
+   * only be applicable for equality, greater or equal, less or equal,
+   * approximate, or extensible matching filters.
+   *
+   * @return  The assertion value for this search filter, or
+   *          {@code null} if there is none.
+   */
+  public abstract ByteString getAssertionValue();
+
+
+
+  /**
+   * Specifies the assertion value for this search filter.  This will
+   * be ignored for types of filters that do not have an assertion
+   * value.
+   *
+   * @param  assertionValue  The assertion value for this search
+   *                         filter.
+   */
+  public abstract void setAssertionValue(ByteString assertionValue);
+
+
+
+  /**
+   * Retrieves the subInitial component for this substring filter.
+   * This is only applicable for substring search filters, but even
+   * substring filters might not have a value for this component.
+   *
+   * @return  The subInitial component for this substring filter, or
+   *          {@code null} if there is none.
+   */
+  public abstract ByteString getSubInitialElement();
+
+
+
+  /**
+   * Specifies the subInitial element for this substring filter.
+   * This will be ignored for all other types of filters.
+   *
+   * @param  subInitialElement  The subInitial element for this
+   *                            substring filter.
+   */
+  public abstract void setSubInitialElement(
+                            ByteString subInitialElement);
+
+
+
+  /**
+   * Retrieves the set of subAny elements for this substring filter.
+   * This is only applicable for substring search filters, and even
+   * then may be {@code null} or empty for some substring filters.
+   *
+   * @return  The set of subAny elements for this substring filter, or
+   *          {@code null} if there are none.
+   */
+  public abstract ArrayList<ByteString> getSubAnyElements();
+
+
+
+  /**
+   * Specifies the set of subAny values for this substring filter.
+   * This will be ignored for other filter types.
+   *
+   * @param  subAnyElements  The set of subAny elements for this
+   *                         substring filter.
+   */
+  public abstract void setSubAnyElements(ArrayList<ByteString>
+                                              subAnyElements);
+
+
+
+  /**
+   * Retrieves the subFinal element for this substring filter.  This
+   * is not applicable for any other filter type, and may not be
+   * provided even for some substring filters.
+   *
+   * @return  The subFinal element for this substring filter, or
+   *          {@code null} if there is none.
+   */
+  public abstract ByteString getSubFinalElement();
+
+
+
+  /**
+   * Specifies the subFinal element for this substring filter.  This
+   * will be ignored for all other filter types.
+   *
+   * @param  subFinalElement  The subFinal element for this substring
+   *                          filter.
+   */
+  public abstract void setSubFinalElement(ByteString subFinalElement);
+
+
+
+  /**
+   * Retrieves the matching rule ID for this extensible match filter.
+   * This is not applicable for any other type of filter and may not
+   * be included in some extensible matching filters.
+   *
+   * @return  The matching rule ID for this extensible match filter,
+   *          or {@code null} if there is none.
+   */
+  public abstract String getMatchingRuleID();
+
+
+
+  /**
+   * Specifies the matching rule ID for this extensible match filter.
+   * It will be ignored for all other filter types.
+   *
+   * @param  matchingRuleID  The matching rule ID for this extensible
+   *                         match filter.
+   */
+  public abstract void setMatchingRuleID(String matchingRuleID);
+
+
+
+  /**
+   * Retrieves the value of the DN attributes flag for this extensible
+   * match filter, which indicates whether to perform matching on the
+   * components of the DN.  This does not apply for any other type of
+   * filter.
+   *
+   * @return  The value of the DN attributes flag for this
+   *          extensibleMatch filter.
+   */
+  public abstract boolean getDNAttributes();
+
+
+
+  /**
+   * Specifies the value of the DN attributes flag for this extensible
+   * match filter.  It will be ignored for all other filter types.
+   *
+   * @param  dnAttributes  The value of the DN attributes flag for
+   *                       this extensible match filter.
+   */
+  public abstract void setDNAttributes(boolean dnAttributes);
+
+
+
+  /**
+   * Encodes this search filter to an ASN.1 element.
+   *
+   * @return  The ASN.1 element containing the encoded search filter.
+   */
+  public final ASN1Element encode()
+  {
+    FilterType filterType = getFilterType();
+    switch (filterType)
+    {
+      case AND:
+      case OR:
+        ArrayList<RawFilter> filterComponents = getFilterComponents();
+        ArrayList<ASN1Element> elements =
+             new ArrayList<ASN1Element>(filterComponents.size());
+        for (RawFilter f : filterComponents)
+        {
+          elements.add(f.encode());
+        }
+        return new ASN1Set(filterType.getBERType(), elements);
+      case NOT:
+        return new ASN1Element(filterType.getBERType(),
+                               getNOTComponent().encode().encode());
+      case EQUALITY:
+      case GREATER_OR_EQUAL:
+      case LESS_OR_EQUAL:
+      case APPROXIMATE_MATCH:
+        String attributeType = getAttributeType();
+        ByteString assertionValue = getAssertionValue();
+        elements = new ArrayList<ASN1Element>(2);
+        elements.add(new ASN1OctetString(attributeType));
+        elements.add(assertionValue.toASN1OctetString());
+        return new ASN1Sequence(filterType.getBERType(), elements);
+      case SUBSTRING:
+        attributeType = getAttributeType();
+        elements = new ArrayList<ASN1Element>(2);
+        elements.add(new ASN1OctetString(attributeType));
+
+        ByteString subInitialElement = getSubInitialElement();
+        ArrayList<ASN1Element> subElements =
+             new ArrayList<ASN1Element>();
+        if (subInitialElement != null)
+        {
+          ASN1OctetString subInitialOS =
+               subInitialElement.toASN1OctetString();
+          subInitialOS.setType(TYPE_SUBINITIAL);
+          subElements.add(subInitialOS);
+        }
+
+        ArrayList<ByteString> subAnyElements = getSubAnyElements();
+        if ((subAnyElements != null) && (! subAnyElements.isEmpty()))
+        {
+          for (ByteString s : subAnyElements)
+          {
+            ASN1OctetString os = s.toASN1OctetString();
+            os.setType(TYPE_SUBANY);
+            subElements.add(os);
+          }
+        }
+
+        ByteString subFinalElement = getSubFinalElement();
+        if (subFinalElement != null)
+        {
+          ASN1OctetString subFinalOS =
+               subFinalElement.toASN1OctetString();
+          subFinalOS.setType(TYPE_SUBFINAL);
+          subElements.add(subFinalOS);
+        }
+
+        elements.add(new ASN1Sequence(subElements));
+        return new ASN1Sequence(filterType.getBERType(), elements);
+      case PRESENT:
+        return new ASN1OctetString(filterType.getBERType(),
+                                   getAttributeType());
+      case EXTENSIBLE_MATCH:
+        elements = new ArrayList<ASN1Element>(4);
+
+        String matchingRuleID = getMatchingRuleID();
+        if (matchingRuleID != null)
+        {
+          elements.add(new ASN1OctetString(TYPE_MATCHING_RULE_ID,
+                                           matchingRuleID));
+        }
+
+        attributeType = getAttributeType();
+        if (attributeType != null)
+        {
+          elements.add(new ASN1OctetString(TYPE_MATCHING_RULE_TYPE,
+                                           attributeType));
+        }
+
+        ASN1OctetString assertionValueOS =
+             getAssertionValue().toASN1OctetString();
+        assertionValueOS.setType(TYPE_MATCHING_RULE_VALUE);
+        elements.add(assertionValueOS);
+
+        if (getDNAttributes())
+        {
+          elements.add(new ASN1Boolean(
+               TYPE_MATCHING_RULE_DN_ATTRIBUTES, true));
+        }
+
+        return new ASN1Sequence(filterType.getBERType(), elements);
+      default:
+        if (debugEnabled())
+        {
+          debugError("Invalid search filter type: %s", filterType);
+        }
+        return null;
+    }
+  }
+
+
+
+  /**
+   * Decodes the provided ASN.1 element as a raw search filter.
+   *
+   * @param  element  The ASN.1 element to decode.
+   *
+   * @return  The decoded search filter.
+   *
+   * @throws  LDAPException  If the provided ASN.1 element cannot be
+   *                         decoded as a raw search filter.
+   */
+  public static LDAPFilter decode(ASN1Element element)
+         throws LDAPException
+  {
+    if (element == null)
+    {
+      int    msgID   = MSGID_LDAP_FILTER_DECODE_NULL;
+      String message = getMessage(msgID);
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message);
+    }
+
+    switch (element.getType())
+    {
+      case TYPE_FILTER_AND:
+      case TYPE_FILTER_OR:
+        return decodeCompoundFilter(element);
+
+      case TYPE_FILTER_NOT:
+        return decodeNotFilter(element);
+
+      case TYPE_FILTER_EQUALITY:
+      case TYPE_FILTER_GREATER_OR_EQUAL:
+      case TYPE_FILTER_LESS_OR_EQUAL:
+      case TYPE_FILTER_APPROXIMATE:
+        return decodeTypeAndValueFilter(element);
+
+      case TYPE_FILTER_SUBSTRING:
+        return decodeSubstringFilter(element);
+
+      case TYPE_FILTER_PRESENCE:
+        return decodePresenceFilter(element);
+
+      case TYPE_FILTER_EXTENSIBLE_MATCH:
+        return decodeExtensibleMatchFilter(element);
+
+      default:
+        int    msgID   = MSGID_LDAP_FILTER_DECODE_INVALID_TYPE;
+        String message = getMessage(msgID, element.getType());
+        throw new LDAPException(PROTOCOL_ERROR, msgID, message);
+    }
+  }
+
+
+
+  /**
+   * Decodes the provided ASN.1 element as a compound filter (i.e.,
+   * one that holds a set of subordinate filter components, like AND
+   * or OR filters).
+   *
+   * @param  element  the ASN.1 element to decode.
+   *
+   * @return  The decoded LDAP search filter.
+   *
+   * @throws  LDAPException  If a problem occurs while trying to
+   *                         decode the provided ASN.1 element as a
+   *                         raw search filter.
+   */
+  private static LDAPFilter decodeCompoundFilter(ASN1Element element)
+          throws LDAPException
+  {
+    FilterType filterType;
+    switch (element.getType())
+    {
+      case TYPE_FILTER_AND:
+        filterType = FilterType.AND;
+        break;
+      case TYPE_FILTER_OR:
+        filterType = FilterType.OR;
+        break;
+      default:
+        // This should never happen.
+        if (debugEnabled())
+        {
+          debugError("Invalid filter type %x for a compound filter",
+                     element.getType());
+        }
+        filterType = null;
+    }
+
+
+    ArrayList<ASN1Element> elements;
+    try
+    {
+      elements = element.decodeAsSet().elements();
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int msgID = MSGID_LDAP_FILTER_DECODE_COMPOUND_SET;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    ArrayList<RawFilter> filterComponents =
+         new ArrayList<RawFilter>(elements.size());
+    try
+    {
+      for (ASN1Element e : elements)
+      {
+        filterComponents.add(LDAPFilter.decode(e));
+      }
+    }
+    catch (LDAPException le)
+    {
+      throw le;
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int msgID = MSGID_LDAP_FILTER_DECODE_COMPOUND_COMPONENTS;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    return new LDAPFilter(filterType, filterComponents, null, null,
+                          null, null, null, null, null, false);
+  }
+
+
+
+  /**
+   * Decodes the provided ASN.1 element as a NOT filter.
+   *
+   * @param  element  the ASN.1 element to decode.
+   *
+   * @return  The decoded LDAP search filter.
+   *
+   * @throws  LDAPException  If a problem occurs while trying to
+   *                         decode the provided ASN.1 element as a
+   *                         raw search filter.
+   */
+  private static LDAPFilter decodeNotFilter(ASN1Element element)
+          throws LDAPException
+  {
+    ASN1Element notFilterElement;
+    try
+    {
+      notFilterElement = ASN1Element.decode(element.value());
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int    msgID   = MSGID_LDAP_FILTER_DECODE_NOT_ELEMENT;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    RawFilter notComponent;
+    try
+    {
+      notComponent = decode(notFilterElement);
+    }
+    catch (LDAPException le)
+    {
+      throw le;
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int    msgID   = MSGID_LDAP_FILTER_DECODE_NOT_COMPONENT;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    return new LDAPFilter(FilterType.NOT, null, notComponent, null,
+                          null, null, null, null, null, false);
+  }
+
+
+
+  /**
+   * Decodes the provided ASN.1 element as a filter containing an
+   * attribute type and an assertion value.  This includes equality,
+   * greater or equal, less or equal, and approximate search filters.
+   *
+   * @param  element  the ASN.1 element to decode.
+   *
+   * @return  The decoded LDAP search filter.
+   *
+   * @throws  LDAPException  If a problem occurs while trying to
+   *                         decode the provided ASN.1 element as a
+   *                         raw search filter.
+   */
+  private static LDAPFilter decodeTypeAndValueFilter(
+                                 ASN1Element element)
+          throws LDAPException
+  {
+    FilterType filterType;
+    switch (element.getType())
+    {
+      case TYPE_FILTER_EQUALITY:
+        filterType = FilterType.EQUALITY;
+        break;
+      case TYPE_FILTER_GREATER_OR_EQUAL:
+        filterType = FilterType.GREATER_OR_EQUAL;
+        break;
+      case TYPE_FILTER_LESS_OR_EQUAL:
+        filterType = FilterType.LESS_OR_EQUAL;
+        break;
+      case TYPE_FILTER_APPROXIMATE:
+        filterType = FilterType.APPROXIMATE_MATCH;
+        break;
+      default:
+        // This should never happen.
+        if (debugEnabled())
+        {
+          debugError("Invalid filter type %x for a type-and-value " +
+                     "filter", element.getType());
+        }
+        filterType = null;
+    }
+
+
+    ArrayList<ASN1Element> elements;
+    try
+    {
+      elements = element.decodeAsSequence().elements();
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int    msgID   = MSGID_LDAP_FILTER_DECODE_TV_SEQUENCE;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    if (elements.size() != 2)
+    {
+      int msgID = MSGID_LDAP_FILTER_DECODE_TV_INVALID_ELEMENT_COUNT;
+      String message = getMessage(msgID, elements.size());
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message);
+    }
+
+
+    String attributeType;
+    try
+    {
+      attributeType =
+           elements.get(0).decodeAsOctetString().stringValue();
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int    msgID   = MSGID_LDAP_FILTER_DECODE_TV_TYPE;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    ByteString assertionValue;
+    try
+    {
+      assertionValue = elements.get(1).decodeAsOctetString();
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int    msgID   = MSGID_LDAP_FILTER_DECODE_TV_VALUE;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    return new LDAPFilter(filterType, null, null, attributeType,
+                          assertionValue, null, null, null, null,
+                          false);
+  }
+
+
+
+  /**
+   * Decodes the provided ASN.1 element as a substring filter.
+   *
+   * @param  element  the ASN.1 element to decode.
+   *
+   * @return  The decoded LDAP search filter.
+   *
+   * @throws  LDAPException  If a problem occurs while trying to
+   *                         decode the provided ASN.1 element as a
+   *                         raw search filter.
+   */
+  private static LDAPFilter decodeSubstringFilter(ASN1Element element)
+          throws LDAPException
+  {
+    ArrayList<ASN1Element> elements;
+    try
+    {
+      elements = element.decodeAsSequence().elements();
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int    msgID   = MSGID_LDAP_FILTER_DECODE_SUBSTRING_SEQUENCE;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    if (elements.size() != 2)
+    {
+      int msgID =
+           MSGID_LDAP_FILTER_DECODE_SUBSTRING_INVALID_ELEMENT_COUNT;
+      String message = getMessage(msgID, elements.size());
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message);
+    }
+
+
+    String attributeType;
+    try
+    {
+      attributeType =
+           elements.get(0).decodeAsOctetString().stringValue();
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int    msgID   = MSGID_LDAP_FILTER_DECODE_SUBSTRING_TYPE;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    ArrayList<ASN1Element> subElements;
+    try
+    {
+      subElements = elements.get(1).decodeAsSequence().elements();
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int    msgID   = MSGID_LDAP_FILTER_DECODE_SUBSTRING_ELEMENTS;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    if (subElements.isEmpty())
+    {
+      int msgID = MSGID_LDAP_FILTER_DECODE_SUBSTRING_NO_SUBELEMENTS;
+      String message = getMessage(msgID);
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message);
+    }
+
+
+    ByteString subInitialElement = null;
+    ByteString subFinalElement   = null;
+    ArrayList<ByteString> subAnyElements = null;
+    try
+    {
+      for (ASN1Element e : subElements)
+      {
+        switch (e.getType())
+        {
+          case TYPE_SUBINITIAL:
+            subInitialElement = e.decodeAsOctetString();
+            break;
+          case TYPE_SUBFINAL:
+            subFinalElement = e.decodeAsOctetString();
+            break;
+          case TYPE_SUBANY:
+            if (subAnyElements == null)
+            {
+              subAnyElements = new ArrayList<ByteString>();
+            }
+
+            subAnyElements.add(e.decodeAsOctetString());
+            break;
+          default:
+            int msgID =
+                 MSGID_LDAP_FILTER_DECODE_SUBSTRING_INVALID_SUBTYPE;
+            String message = getMessage(msgID);
+            throw new LDAPException(PROTOCOL_ERROR, msgID, message);
+        }
+      }
+    }
+    catch (LDAPException le)
+    {
+      throw le;
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int    msgID   = MSGID_LDAP_FILTER_DECODE_SUBSTRING_VALUES;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    return new LDAPFilter(FilterType.SUBSTRING, null, null,
+                          attributeType, null, subInitialElement,
+                          subAnyElements, subFinalElement, null,
+                          false);
+  }
+
+
+
+  /**
+   * Decodes the provided ASN.1 element as a presence filter.
+   *
+   * @param  element  the ASN.1 element to decode.
+   *
+   * @return  The decoded LDAP search filter.
+   *
+   * @throws  LDAPException  If a problem occurs while trying to
+   *                         decode the provided ASN.1 element as a
+   *                         raw search filter.
+   */
+  private static LDAPFilter decodePresenceFilter(ASN1Element element)
+          throws LDAPException
+  {
+    String attributeType;
+    try
+    {
+      attributeType = element.decodeAsOctetString().stringValue();
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int    msgID   = MSGID_LDAP_FILTER_DECODE_PRESENCE_TYPE;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    return new LDAPFilter(FilterType.PRESENT, null, null,
+                          attributeType, null, null, null, null, null,
+                          false);
+  }
+
+
+
+  /**
+   * Decodes the provided ASN.1 element as an extensible match filter.
+   *
+   * @param  element  the ASN.1 element to decode.
+   *
+   * @return  The decoded LDAP search filter.
+   *
+   * @throws  LDAPException  If a problem occurs while trying to
+   *                         decode the provided ASN.1 element as a
+   *                         raw search filter.
+   */
+  private static LDAPFilter decodeExtensibleMatchFilter(ASN1Element
+                                                             element)
+          throws LDAPException
+  {
+    ArrayList<ASN1Element> elements;
+    try
+    {
+      elements = element.decodeAsSequence().elements();
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int    msgID   = MSGID_LDAP_FILTER_DECODE_EXTENSIBLE_SEQUENCE;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    ByteString assertionValue = null;
+    boolean    dnAttributes   = false;
+    String     attributeType  = null;
+    String     matchingRuleID = null;
+    try
+    {
+      for (ASN1Element e : elements)
+      {
+        switch (e.getType())
+        {
+          case TYPE_MATCHING_RULE_ID:
+            matchingRuleID = e.decodeAsOctetString().stringValue();
+            break;
+          case TYPE_MATCHING_RULE_TYPE:
+            attributeType = e.decodeAsOctetString().stringValue();
+            break;
+          case TYPE_MATCHING_RULE_VALUE:
+            assertionValue = e.decodeAsOctetString();
+            break;
+          case TYPE_MATCHING_RULE_DN_ATTRIBUTES:
+            dnAttributes = e.decodeAsBoolean().booleanValue();
+            break;
+          default:
+            int msgID =
+                 MSGID_LDAP_FILTER_DECODE_EXTENSIBLE_INVALID_TYPE;
+            String message = getMessage(msgID, e.getType());
+            throw new LDAPException(PROTOCOL_ERROR, msgID, message);
+        }
+      }
+    }
+    catch (LDAPException le)
+    {
+      throw le;
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int    msgID   = MSGID_LDAP_FILTER_DECODE_EXTENSIBLE_ELEMENTS;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    return new LDAPFilter(FilterType.EXTENSIBLE_MATCH, null, null,
+                          attributeType, assertionValue, null, null,
+                          null, matchingRuleID, dnAttributes);
+  }
+
+
+
+  /**
+   * Converts this raw filter to a search filter that may be used by
+   * the Directory Server's core processing.
+   *
+   * @return  The generated search filter.
+   *
+   * @throws  DirectoryException  If a problem occurs while attempting
+   *                              to construct the search filter.
+   */
+  public abstract SearchFilter toSearchFilter()
+         throws DirectoryException;
+
+
+
+  /**
+   * Retrieves a string representation of this search filter.
+   *
+   * @return  A string representation of this search filter.
+   */
+  public String toString()
+  {
+    StringBuilder buffer = new StringBuilder();
+    toString(buffer);
+    return buffer.toString();
+  }
+
+
+
+  /**
+   * Appends a string representation of this search filter to the
+   * provided buffer.
+   *
+   * @param  buffer  The buffer to which the information should be
+   *                 appended.
+   */
+  public abstract void toString(StringBuilder buffer);
+
+
+
+  /**
+   * Appends a properly-cleaned version of the provided value to the
+   * given buffer so that it can be safely used in string
+   * representations of this search filter.  The formatting changes
+   * that may be performed will be in compliance with the
+   * specification in RFC 2254.
+   *
+   * @param  buffer  The buffer to which the "safe" version of the
+   *                 value will be appended.
+   * @param  value   The value to be appended to the buffer.
+   */
+  public static void valueToFilterString(StringBuilder buffer,
+                                         ByteString value)
+  {
+    if (value == null)
+    {
+      return;
+    }
+
+
+    // Get the binary representation of the value and iterate through
+    // it to see if there are any unsafe characters.  If there are,
+    // then escape them and replace them with a two-digit hex
+    // equivalent.
+    byte[] valueBytes = value.value();
+    buffer.ensureCapacity(buffer.length() + valueBytes.length);
+    for (byte b : valueBytes)
+    {
+      if (((b & 0x7F) != b) ||  // Not 7-bit clean
+          (b <= 0x1F) ||        // Below the printable character range
+          (b == 0x28) ||        // Open parenthesis
+          (b == 0x29) ||        // Close parenthesis
+          (b == 0x2A) ||        // Asterisk
+          (b == 0x5C) ||        // Backslash
+          (b == 0x7F))          // Delete character
+      {
+        buffer.append("\\");
+        buffer.append(byteToHex(b));
+      }
+      else
+      {
+        buffer.append((char) b);
+      }
+    }
+  }
+}
+
diff --git a/opends/src/server/org/opends/server/types/RawModification.java b/opends/src/server/org/opends/server/types/RawModification.java
new file mode 100644
index 0000000..9977d7ca
--- /dev/null
+++ b/opends/src/server/org/opends/server/types/RawModification.java
@@ -0,0 +1,387 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License").  You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+ * add the following below this CDDL HEADER, with the fields enclosed
+ * by brackets "[]" replaced with your own identifying information:
+ *      Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ *      Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ */
+package org.opends.server.types;
+
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.opends.server.protocols.asn1.ASN1Element;
+import org.opends.server.protocols.asn1.ASN1Enumerated;
+import org.opends.server.protocols.asn1.ASN1Sequence;
+import org.opends.server.protocols.ldap.LDAPModification;
+
+import static org.opends.server.loggers.debug.DebugLogger.*;
+import static org.opends.server.messages.MessageHandler.*;
+import static org.opends.server.messages.ProtocolMessages.*;
+import static org.opends.server.protocols.ldap.LDAPConstants.*;
+import static org.opends.server.protocols.ldap.LDAPResultCode.*;
+import static org.opends.server.util.ServerConstants.*;
+
+
+
+/**
+ * This class defines the data structures and methods to use when
+ * interacting with a raw modification, which describes a change that
+ * should be made to an attribute.
+ */
+public abstract class RawModification
+{
+  /**
+   * Creates a new raw modification with the provided type and
+   * attribute.
+   *
+   * @param  modificationType  The modification type for this
+   *                           modification.
+   * @param  attribute         The attribute for this modification.
+   *
+   * @return  The constructed raw modification.
+   */
+  public static RawModification
+                     create(ModificationType modificationType,
+                            RawAttribute attribute)
+  {
+    return new LDAPModification(modificationType, attribute);
+  }
+
+
+
+  /**
+   * Creates a new raw modification with the provided type and
+   * attribute.
+   *
+   * @param  modificationType  The modification type for this
+   *                           modification.
+   * @param  attributeType     The name of the attribute type for this
+   *                           modification.
+   *
+   * @return  The constructed raw modification.
+   */
+  public static RawModification
+                     create(ModificationType modificationType,
+                            String attributeType)
+  {
+    RawAttribute rawAttribute = RawAttribute.create(attributeType);
+
+    return new LDAPModification(modificationType, rawAttribute);
+  }
+
+
+
+  /**
+   * Creates a new raw modification with the provided type and
+   * attribute.
+   *
+   * @param  modificationType  The modification type for this
+   *                           modification.
+   * @param  attributeType     The name of the attribute type for this
+   *                           modification.
+   * @param  attributeValue    The attribute value for this
+   *                           modification.
+   *
+   * @return  The constructed raw modification.
+   */
+  public static RawModification
+                     create(ModificationType modificationType,
+                            String attributeType,
+                            String attributeValue)
+  {
+    RawAttribute rawAttribute =
+         RawAttribute.create(attributeType, attributeValue);
+
+    return new LDAPModification(modificationType, rawAttribute);
+  }
+
+
+
+  /**
+   * Creates a new raw modification with the provided type and
+   * attribute.
+   *
+   * @param  modificationType  The modification type for this
+   *                           modification.
+   * @param  attributeType     The name of the attribute type for this
+   *                           modification.
+   * @param  attributeValue    The attribute value for this
+   *                           modification.
+   *
+   * @return  The constructed raw modification.
+   */
+  public static RawModification
+                     create(ModificationType modificationType,
+                            String attributeType,
+                            ByteString attributeValue)
+  {
+    RawAttribute rawAttribute =
+         RawAttribute.create(attributeType, attributeValue);
+
+    return new LDAPModification(modificationType, rawAttribute);
+  }
+
+
+
+  /**
+   * Creates a new raw modification with the provided type and
+   * attribute.
+   *
+   * @param  modificationType  The modification type for this
+   *                           modification.
+   * @param  attributeType     The name of the attribute type for this
+   *                           modification.
+   * @param  attributeValues   The set of attribute values for this
+   *                           modification.
+   *
+   * @return  The constructed raw modification.
+   */
+  public static RawModification
+                     create(ModificationType modificationType,
+                            String attributeType,
+                            List<ByteString> attributeValues)
+  {
+    RawAttribute rawAttribute =
+         RawAttribute.create(attributeType, attributeValues);
+
+    return new LDAPModification(modificationType, rawAttribute);
+  }
+
+
+
+  /**
+   * Retrieves the modification type for this modification.
+   *
+   * @return  The modification type for this modification.
+   */
+  public abstract ModificationType getModificationType();
+
+
+
+  /**
+   * Specifies the modification type for this modification.
+   *
+   * @param  modificationType  The modification type for this
+   *                           modification.
+   */
+  public abstract void setModificationType(
+                            ModificationType modificationType);
+
+
+
+  /**
+   * Retrieves the attribute for this modification.
+   *
+   * @return  The attribute for this modification.
+   */
+  public abstract RawAttribute getAttribute();
+
+
+
+  /**
+   * Specifies the attribute for this modification.
+   *
+   * @param  attribute  The attribute for this modification.
+   */
+  public abstract void setAttribute(RawAttribute attribute);
+
+
+
+  /**
+   * Encodes this modification to an ASN.1 element.
+   *
+   * @return  The ASN.1 element containing the encoded modification.
+   */
+  public final ASN1Element encode()
+  {
+    ArrayList<ASN1Element> elements = new ArrayList<ASN1Element>(2);
+    elements.add(new ASN1Enumerated(
+                          getModificationType().intValue()));
+    elements.add(getAttribute().encode());
+
+    return new ASN1Sequence(elements);
+  }
+
+
+
+  /**
+   * Decodes the provided ASN.1 element as an LDAP modification.
+   *
+   * @param  element  The ASN.1 element to decode.
+   *
+   * @return  The decoded LDAP modification.
+   *
+   * @throws  LDAPException  If a problem occurs while attempting to
+   *                         decode the provided ASN.1 element as a
+   *                         raw modification.
+   */
+  public static LDAPModification decode(ASN1Element element)
+         throws LDAPException
+  {
+    ArrayList<ASN1Element> elements;
+    try
+    {
+      elements = element.decodeAsSequence().elements();
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int msgID = MSGID_LDAP_MODIFICATION_DECODE_SEQUENCE;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    int numElements = elements.size();
+    if (numElements != 2)
+    {
+      int msgID =
+           MSGID_LDAP_MODIFICATION_DECODE_INVALID_ELEMENT_COUNT;
+      String message = getMessage(msgID, numElements);
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message);
+    }
+
+
+    ModificationType modificationType;
+    try
+    {
+      switch (elements.get(0).decodeAsEnumerated().intValue())
+      {
+        case MOD_TYPE_ADD:
+          modificationType = ModificationType.ADD;
+          break;
+        case MOD_TYPE_DELETE:
+          modificationType = ModificationType.DELETE;
+          break;
+        case MOD_TYPE_REPLACE:
+          modificationType = ModificationType.REPLACE;
+          break;
+        case MOD_TYPE_INCREMENT:
+          modificationType = ModificationType.INCREMENT;
+          break;
+        default:
+          int intValue =
+                   elements.get(0).decodeAsEnumerated().intValue();
+          int msgID = MSGID_LDAP_MODIFICATION_DECODE_INVALID_MOD_TYPE;
+          String message = getMessage(msgID, intValue);
+          throw new LDAPException(PROTOCOL_ERROR, msgID, message);
+      }
+    }
+    catch (LDAPException le)
+    {
+      throw le;
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int msgID = MSGID_LDAP_MODIFICATION_DECODE_MOD_TYPE;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    RawAttribute attribute;
+    try
+    {
+      attribute = RawAttribute.decode(elements.get(1));
+    }
+    catch (Exception e)
+    {
+      if (debugEnabled())
+      {
+        debugCaught(DebugLogLevel.ERROR, e);
+      }
+
+      int msgID = MSGID_LDAP_MODIFICATION_DECODE_ATTR;
+      String message = getMessage(msgID, String.valueOf(e));
+      throw new LDAPException(PROTOCOL_ERROR, msgID, message, e);
+    }
+
+
+    return new LDAPModification(modificationType, attribute);
+  }
+
+
+
+  /**
+   * Creates a new core {@code Modification} object from this raw
+   * modification.
+   *
+   * @return  The decoded modification.
+   *
+   * @throws  LDAPException  If a problem occurs while trying to
+   *                         convert the raw modification to a core
+   *                         {@code Modification}.
+   */
+  public abstract Modification toModification()
+         throws LDAPException;
+
+
+
+  /**
+   * Retrieves a string representation of this modification.
+   *
+   * @return  A string representation of this modification.
+   */
+  public String toString()
+  {
+    StringBuilder buffer = new StringBuilder();
+    toString(buffer);
+    return buffer.toString();
+  }
+
+
+
+  /**
+   * Appends a string representation of this modification to the
+   * provided buffer.
+   *
+   * @param  buffer  The buffer to which the information should be
+   *                 appended.
+   */
+  public abstract void toString(StringBuilder buffer);
+
+
+
+  /**
+   * Appends a multi-line string representation of this LDAP
+   * modification to the provided buffer.
+   *
+   * @param  buffer  The buffer to which the information should be
+   *                 appended.
+   * @param  indent  The number of spaces from the margin that the
+   *                 lines should be indented.
+   */
+  public abstract void toString(StringBuilder buffer, int indent);
+}
+
diff --git a/opends/src/server/org/opends/server/types/Schema.java b/opends/src/server/org/opends/server/types/Schema.java
index 17fcf91..6732d5a 100644
--- a/opends/src/server/org/opends/server/types/Schema.java
+++ b/opends/src/server/org/opends/server/types/Schema.java
@@ -2956,7 +2956,7 @@
                ErrorLogSeverity.SEVERE_WARNING,
                MSGID_SCHEMA_CANNOT_WRITE_CONCAT_SCHEMA_FILE,
                String.valueOf(concatFilePath),
-               stackTraceToSingleLineString(e));
+               getExceptionMessage(e));
     }
   }
 
diff --git a/opends/src/server/org/opends/server/types/operation/PostOperationAddOperation.java b/opends/src/server/org/opends/server/types/operation/PostOperationAddOperation.java
index ab76996..697ef89 100644
--- a/opends/src/server/org/opends/server/types/operation/PostOperationAddOperation.java
+++ b/opends/src/server/org/opends/server/types/operation/PostOperationAddOperation.java
@@ -31,13 +31,13 @@
 import java.util.List;
 import java.util.Map;
 
-import org.opends.server.protocols.ldap.LDAPAttribute;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
 import org.opends.server.types.ObjectClass;
+import org.opends.server.types.RawAttribute;
 
 
 
@@ -71,7 +71,7 @@
    * @return  The set of attributes in their raw, unparsed form as
    *          read from the client request.
    */
-  public List<LDAPAttribute> getRawAttributes();
+  public List<RawAttribute> getRawAttributes();
 
 
 
diff --git a/opends/src/server/org/opends/server/types/operation/PostOperationModifyOperation.java b/opends/src/server/org/opends/server/types/operation/PostOperationModifyOperation.java
index 12ca3bf..bed7c21 100644
--- a/opends/src/server/org/opends/server/types/operation/PostOperationModifyOperation.java
+++ b/opends/src/server/org/opends/server/types/operation/PostOperationModifyOperation.java
@@ -30,12 +30,12 @@
 
 import java.util.List;
 
-import org.opends.server.protocols.ldap.LDAPModification;
 import org.opends.server.types.AttributeValue;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
 import org.opends.server.types.Modification;
+import org.opends.server.types.RawModification;
 
 
 
@@ -79,7 +79,7 @@
    * @return  The set of raw, unprocessed modifications as included
    *          in the client request.
    */
-  public List<LDAPModification> getRawModifications();
+  public List<RawModification> getRawModifications();
 
 
 
diff --git a/opends/src/server/org/opends/server/types/operation/PostOperationSearchOperation.java b/opends/src/server/org/opends/server/types/operation/PostOperationSearchOperation.java
index 2e4d3a5..5bd1d6c 100644
--- a/opends/src/server/org/opends/server/types/operation/PostOperationSearchOperation.java
+++ b/opends/src/server/org/opends/server/types/operation/PostOperationSearchOperation.java
@@ -30,10 +30,10 @@
 
 import java.util.LinkedHashSet;
 
-import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.DereferencePolicy;
 import org.opends.server.types.DN;
+import org.opends.server.types.RawFilter;
 import org.opends.server.types.SearchScope;
 import org.opends.server.types.SearchFilter;
 
@@ -126,7 +126,7 @@
    * @return  The raw, unprocessed search filter as included in the
    *          request from the client.
    */
-  public LDAPFilter getRawFilter();
+  public RawFilter getRawFilter();
 
 
 
diff --git a/opends/src/server/org/opends/server/types/operation/PostResponseAddOperation.java b/opends/src/server/org/opends/server/types/operation/PostResponseAddOperation.java
index c565c38..38b1c72 100644
--- a/opends/src/server/org/opends/server/types/operation/PostResponseAddOperation.java
+++ b/opends/src/server/org/opends/server/types/operation/PostResponseAddOperation.java
@@ -31,13 +31,13 @@
 import java.util.List;
 import java.util.Map;
 
-import org.opends.server.protocols.ldap.LDAPAttribute;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
 import org.opends.server.types.ObjectClass;
+import org.opends.server.types.RawAttribute;
 
 
 
@@ -71,7 +71,7 @@
    * @return  The set of attributes in their raw, unparsed form as
    *          read from the client request.
    */
-  public List<LDAPAttribute> getRawAttributes();
+  public List<RawAttribute> getRawAttributes();
 
 
 
diff --git a/opends/src/server/org/opends/server/types/operation/PostResponseModifyOperation.java b/opends/src/server/org/opends/server/types/operation/PostResponseModifyOperation.java
index 87e27bc..d264c66 100644
--- a/opends/src/server/org/opends/server/types/operation/PostResponseModifyOperation.java
+++ b/opends/src/server/org/opends/server/types/operation/PostResponseModifyOperation.java
@@ -30,12 +30,12 @@
 
 import java.util.List;
 
-import org.opends.server.protocols.ldap.LDAPModification;
 import org.opends.server.types.AttributeValue;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
 import org.opends.server.types.Modification;
+import org.opends.server.types.RawModification;
 
 
 
@@ -79,7 +79,7 @@
    * @return  The set of raw, unprocessed modifications as included
    *          in the client request.
    */
-  public List<LDAPModification> getRawModifications();
+  public List<RawModification> getRawModifications();
 
 
 
diff --git a/opends/src/server/org/opends/server/types/operation/PostResponseSearchOperation.java b/opends/src/server/org/opends/server/types/operation/PostResponseSearchOperation.java
index 1b13d3c..506e662 100644
--- a/opends/src/server/org/opends/server/types/operation/PostResponseSearchOperation.java
+++ b/opends/src/server/org/opends/server/types/operation/PostResponseSearchOperation.java
@@ -30,10 +30,10 @@
 
 import java.util.LinkedHashSet;
 
-import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.DereferencePolicy;
 import org.opends.server.types.DN;
+import org.opends.server.types.RawFilter;
 import org.opends.server.types.SearchScope;
 import org.opends.server.types.SearchFilter;
 
@@ -126,7 +126,7 @@
    * @return  The raw, unprocessed search filter as included in the
    *          request from the client.
    */
-  public LDAPFilter getRawFilter();
+  public RawFilter getRawFilter();
 
 
 
diff --git a/opends/src/server/org/opends/server/types/operation/PreOperationAddOperation.java b/opends/src/server/org/opends/server/types/operation/PreOperationAddOperation.java
index 7f994ec..987d5b5 100644
--- a/opends/src/server/org/opends/server/types/operation/PreOperationAddOperation.java
+++ b/opends/src/server/org/opends/server/types/operation/PreOperationAddOperation.java
@@ -31,13 +31,13 @@
 import java.util.List;
 import java.util.Map;
 
-import org.opends.server.protocols.ldap.LDAPAttribute;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
 import org.opends.server.types.ObjectClass;
+import org.opends.server.types.RawAttribute;
 
 
 
@@ -71,7 +71,7 @@
    * @return  The set of attributes in their raw, unparsed form as
    *          read from the client request.
    */
-  public List<LDAPAttribute> getRawAttributes();
+  public List<RawAttribute> getRawAttributes();
 
 
 
diff --git a/opends/src/server/org/opends/server/types/operation/PreOperationModifyOperation.java b/opends/src/server/org/opends/server/types/operation/PreOperationModifyOperation.java
index 8b9cf75..bcbf7a2 100644
--- a/opends/src/server/org/opends/server/types/operation/PreOperationModifyOperation.java
+++ b/opends/src/server/org/opends/server/types/operation/PreOperationModifyOperation.java
@@ -30,13 +30,13 @@
 
 import java.util.List;
 
-import org.opends.server.protocols.ldap.LDAPModification;
 import org.opends.server.types.AttributeValue;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
 import org.opends.server.types.Modification;
+import org.opends.server.types.RawModification;
 
 
 
@@ -80,7 +80,7 @@
    * @return  The set of raw, unprocessed modifications as included
    *          in the client request.
    */
-  public List<LDAPModification> getRawModifications();
+  public List<RawModification> getRawModifications();
 
 
 
diff --git a/opends/src/server/org/opends/server/types/operation/PreOperationSearchOperation.java b/opends/src/server/org/opends/server/types/operation/PreOperationSearchOperation.java
index a3af78f..db145f8 100644
--- a/opends/src/server/org/opends/server/types/operation/PreOperationSearchOperation.java
+++ b/opends/src/server/org/opends/server/types/operation/PreOperationSearchOperation.java
@@ -31,12 +31,12 @@
 import java.util.LinkedHashSet;
 import java.util.List;
 
-import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.Control;
 import org.opends.server.types.DereferencePolicy;
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
+import org.opends.server.types.RawFilter;
 import org.opends.server.types.SearchScope;
 import org.opends.server.types.SearchFilter;
 import org.opends.server.types.SearchResultReference;
@@ -130,7 +130,7 @@
    * @return  The raw, unprocessed search filter as included in the
    *          request from the client.
    */
-  public LDAPFilter getRawFilter();
+  public RawFilter getRawFilter();
 
 
 
diff --git a/opends/src/server/org/opends/server/types/operation/PreParseAddOperation.java b/opends/src/server/org/opends/server/types/operation/PreParseAddOperation.java
index dcef984..4704daf 100644
--- a/opends/src/server/org/opends/server/types/operation/PreParseAddOperation.java
+++ b/opends/src/server/org/opends/server/types/operation/PreParseAddOperation.java
@@ -30,9 +30,8 @@
 
 import java.util.List;
 
-import org.opends.server.protocols.ldap.LDAPAttribute;
 import org.opends.server.types.ByteString;
-
+import org.opends.server.types.RawAttribute;
 
 
 
@@ -75,7 +74,7 @@
    * @return  The set of attributes in their raw, unparsed form as
    *          read from the client request.
    */
-  public List<LDAPAttribute> getRawAttributes();
+  public List<RawAttribute> getRawAttributes();
 
 
 
@@ -86,7 +85,7 @@
    * @param  rawAttribute  The attribute to add to the set of raw
    *                       attributes for this add operation.
    */
-  public void addRawAttribute(LDAPAttribute rawAttribute);
+  public void addRawAttribute(RawAttribute rawAttribute);
 
 
 
@@ -96,6 +95,6 @@
    * @param  rawAttributes  The set of raw attributes for this add
    *                        operation.
    */
-  public void setRawAttributes(List<LDAPAttribute> rawAttributes);
+  public void setRawAttributes(List<RawAttribute> rawAttributes);
 }
 
diff --git a/opends/src/server/org/opends/server/types/operation/PreParseModifyOperation.java b/opends/src/server/org/opends/server/types/operation/PreParseModifyOperation.java
index 433acc6..52d9c43 100644
--- a/opends/src/server/org/opends/server/types/operation/PreParseModifyOperation.java
+++ b/opends/src/server/org/opends/server/types/operation/PreParseModifyOperation.java
@@ -30,8 +30,8 @@
 
 import java.util.List;
 
-import org.opends.server.protocols.ldap.LDAPModification;
 import org.opends.server.types.ByteString;
+import org.opends.server.types.RawModification;
 
 
 
@@ -77,7 +77,7 @@
    * @return  The set of raw, unprocessed modifications as included
    *          in the client request.
    */
-  public List<LDAPModification> getRawModifications();
+  public List<RawModification> getRawModifications();
 
 
 
@@ -89,7 +89,7 @@
    *                          raw modifications for this modify
    *                          operation.
    */
-  public void addRawModification(LDAPModification rawModification);
+  public void addRawModification(RawModification rawModification);
 
 
 
@@ -100,6 +100,6 @@
    *                           operation.
    */
   public void setRawModifications(
-                   List<LDAPModification> rawModifications);
+                   List<RawModification> rawModifications);
 }
 
diff --git a/opends/src/server/org/opends/server/types/operation/PreParseSearchOperation.java b/opends/src/server/org/opends/server/types/operation/PreParseSearchOperation.java
index e9405d5..c25f1a5 100644
--- a/opends/src/server/org/opends/server/types/operation/PreParseSearchOperation.java
+++ b/opends/src/server/org/opends/server/types/operation/PreParseSearchOperation.java
@@ -31,11 +31,11 @@
 import java.util.LinkedHashSet;
 import java.util.List;
 
-import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.Control;
 import org.opends.server.types.DereferencePolicy;
 import org.opends.server.types.Entry;
+import org.opends.server.types.RawFilter;
 import org.opends.server.types.SearchResultReference;
 import org.opends.server.types.SearchScope;
 
@@ -176,7 +176,7 @@
    * @return  The raw, unprocessed search filter as included in the
    *          request from the client.
    */
-  public LDAPFilter getRawFilter();
+  public RawFilter getRawFilter();
 
 
 
@@ -186,7 +186,7 @@
    *
    * @param  rawFilter  The raw, unprocessed search filter.
    */
-  public void setRawFilter(LDAPFilter rawFilter);
+  public void setRawFilter(RawFilter rawFilter);
 
 
 
diff --git a/opends/src/server/org/opends/server/types/operation/SearchEntrySearchOperation.java b/opends/src/server/org/opends/server/types/operation/SearchEntrySearchOperation.java
index fbad5a6..b6689e1 100644
--- a/opends/src/server/org/opends/server/types/operation/SearchEntrySearchOperation.java
+++ b/opends/src/server/org/opends/server/types/operation/SearchEntrySearchOperation.java
@@ -30,10 +30,10 @@
 
 import java.util.LinkedHashSet;
 
-import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.DereferencePolicy;
 import org.opends.server.types.DN;
+import org.opends.server.types.RawFilter;
 import org.opends.server.types.SearchScope;
 import org.opends.server.types.SearchFilter;
 
@@ -126,7 +126,7 @@
    * @return  The raw, unprocessed search filter as included in the
    *          request from the client.
    */
-  public LDAPFilter getRawFilter();
+  public RawFilter getRawFilter();
 
 
 
diff --git a/opends/src/server/org/opends/server/types/operation/SearchReferenceSearchOperation.java b/opends/src/server/org/opends/server/types/operation/SearchReferenceSearchOperation.java
index 095ef7d..852e000 100644
--- a/opends/src/server/org/opends/server/types/operation/SearchReferenceSearchOperation.java
+++ b/opends/src/server/org/opends/server/types/operation/SearchReferenceSearchOperation.java
@@ -30,10 +30,10 @@
 
 import java.util.LinkedHashSet;
 
-import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.DereferencePolicy;
 import org.opends.server.types.DN;
+import org.opends.server.types.RawFilter;
 import org.opends.server.types.SearchScope;
 import org.opends.server.types.SearchFilter;
 
@@ -126,7 +126,7 @@
    * @return  The raw, unprocessed search filter as included in the
    *          request from the client.
    */
-  public LDAPFilter getRawFilter();
+  public RawFilter getRawFilter();
 
 
 
diff --git a/opends/src/server/org/opends/server/util/LDIFReader.java b/opends/src/server/org/opends/server/util/LDIFReader.java
index ea638f3..b6bf142 100644
--- a/opends/src/server/org/opends/server/util/LDIFReader.java
+++ b/opends/src/server/org/opends/server/util/LDIFReader.java
@@ -69,6 +69,7 @@
 import org.opends.server.types.LDIFImportConfig;
 import org.opends.server.types.ModificationType;
 import org.opends.server.types.ObjectClass;
+import org.opends.server.types.RawModification;
 import org.opends.server.types.RDN;
 
 
@@ -1384,7 +1385,7 @@
   private ChangeRecordEntry parseModifyChangeRecordEntry(DN entryDN,
       LinkedList<StringBuilder> lines) throws LDIFException {
 
-    List<LDAPModification> modifications = new ArrayList<LDAPModification>();
+    List<RawModification> modifications = new ArrayList<RawModification>();
     while(!lines.isEmpty())
     {
       ModificationType modType = null;
diff --git a/opends/src/server/org/opends/server/util/ModifyChangeRecordEntry.java b/opends/src/server/org/opends/server/util/ModifyChangeRecordEntry.java
index 35505be..e88736c 100644
--- a/opends/src/server/org/opends/server/util/ModifyChangeRecordEntry.java
+++ b/opends/src/server/org/opends/server/util/ModifyChangeRecordEntry.java
@@ -33,8 +33,8 @@
 import java.util.Collections;
 import java.util.List;
 
-import org.opends.server.protocols.ldap.LDAPModification;
 import org.opends.server.types.DN;
+import org.opends.server.types.RawModification;
 
 
 
@@ -50,7 +50,7 @@
   /**
    * The modifications for this change record.
    */
-  private final List<LDAPModification> modifications;
+  private final List<RawModification> modifications;
 
 
 
@@ -63,14 +63,14 @@
    *                        not be <CODE>null</CODE>.
    */
   public ModifyChangeRecordEntry(DN dn,
-      Collection<LDAPModification> modifications)
+      Collection<RawModification> modifications)
   {
     super(dn);
 
 
     ensureNotNull(modifications);
 
-    this.modifications = new ArrayList<LDAPModification>(modifications);
+    this.modifications = new ArrayList<RawModification>(modifications);
   }
 
 
@@ -81,7 +81,7 @@
    *
    * @return Returns the unmodifiable list of modifications.
    */
-  public List<LDAPModification> getModifications()
+  public List<RawModification> getModifications()
   {
     return Collections.unmodifiableList(modifications);
   }
diff --git a/opends/src/server/org/opends/server/util/args/ArgumentParser.java b/opends/src/server/org/opends/server/util/args/ArgumentParser.java
index 658533d..9608bd2 100644
--- a/opends/src/server/org/opends/server/util/args/ArgumentParser.java
+++ b/opends/src/server/org/opends/server/util/args/ArgumentParser.java
@@ -555,7 +555,7 @@
       {
         int    msgID   = MSGID_ARGPARSER_CANNOT_READ_PROPERTIES_FILE;
         String message = getMessage(msgID, String.valueOf(propertiesFile),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new ArgumentException(msgID, message, e);
       }
     }
diff --git a/opends/src/server/org/opends/server/util/args/FileBasedArgument.java b/opends/src/server/org/opends/server/util/args/FileBasedArgument.java
index 1be98ae..909bc45 100644
--- a/opends/src/server/org/opends/server/util/args/FileBasedArgument.java
+++ b/opends/src/server/org/opends/server/util/args/FileBasedArgument.java
@@ -193,7 +193,7 @@
     {
       int msgID = MSGID_FILEARG_CANNOT_VERIFY_FILE_EXISTENCE;
       invalidReason.append(getMessage(msgID, valueString, getName(),
-                                      stackTraceToSingleLineString(e)));
+                                      getExceptionMessage(e)));
       return false;
     }
 
@@ -208,7 +208,7 @@
     {
       int msgID = MSGID_FILEARG_CANNOT_OPEN_FILE;
       invalidReason.append(getMessage(msgID, valueString, getName(),
-                                      stackTraceToSingleLineString(e)));
+                                      getExceptionMessage(e)));
       return false;
     }
 
@@ -223,7 +223,7 @@
     {
       int msgID = MSGID_FILEARG_CANNOT_READ_FILE;
       invalidReason.append(getMessage(msgID, valueString, getName(),
-                                      stackTraceToSingleLineString(e)));
+                                      getExceptionMessage(e)));
       return false;
     }
     finally
diff --git a/opends/src/server/org/opends/server/util/args/SubCommandArgumentParser.java b/opends/src/server/org/opends/server/util/args/SubCommandArgumentParser.java
index 158e46d..83ac61e 100644
--- a/opends/src/server/org/opends/server/util/args/SubCommandArgumentParser.java
+++ b/opends/src/server/org/opends/server/util/args/SubCommandArgumentParser.java
@@ -618,7 +618,7 @@
       {
         int    msgID   = MSGID_SUBCMDPARSER_CANNOT_READ_PROPERTIES_FILE;
         String message = getMessage(msgID, String.valueOf(propertiesFile),
-                                    stackTraceToSingleLineString(e));
+                                    getExceptionMessage(e));
         throw new ArgumentException(msgID, message, e);
       }
     }
diff --git a/opends/tests/unit-tests-testng/resource/ldif-diff/diff-nochanges.ldif b/opends/tests/unit-tests-testng/resource/ldif-diff/diff-nochanges.ldif
index f0d759c..a6f4d42 100644
--- a/opends/tests/unit-tests-testng/resource/ldif-diff/diff-nochanges.ldif
+++ b/opends/tests/unit-tests-testng/resource/ldif-diff/diff-nochanges.ldif
@@ -1 +1 @@
-# No differences were detected between the source and target LDIF files.
+# No differences were detected between the source and target LDIF files
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/TestAccessLogger.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/TestAccessLogger.java
index 8777497..b0747ce 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/TestAccessLogger.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/TestAccessLogger.java
@@ -44,12 +44,10 @@
 import org.opends.server.core.ExtendedOperation;
 import org.opends.server.core.ModifyOperation;
 import org.opends.server.core.ModifyDNOperation;
-import org.opends.server.core.Operation;
 import org.opends.server.core.SearchOperation;
 import org.opends.server.core.UnbindOperation;
 import org.opends.server.config.ConfigEntry;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPAttribute;
 import org.opends.server.protocols.ldap.LDAPModification;
 import org.opends.server.types.Attribute;
 import org.opends.server.types.AttributeValue;
@@ -57,6 +55,9 @@
 import org.opends.server.types.ByteString;
 import org.opends.server.types.DisconnectReason;
 import org.opends.server.types.DN;
+import org.opends.server.types.Operation;
+import org.opends.server.types.RawAttribute;
+import org.opends.server.types.RawModification;
 import org.opends.server.types.SearchResultEntry;
 import org.opends.server.types.SearchResultReference;
 import org.opends.server.util.TimeThread;
@@ -263,11 +264,11 @@
     buffer.append(addOperation.getRawEntryDN());
     buffer.append("\" attributes={");
 
-    Iterator<LDAPAttribute> attrIterator =
+    Iterator<RawAttribute> attrIterator =
          addOperation.getRawAttributes().iterator();
     if (attrIterator.hasNext())
     {
-      LDAPAttribute attr = attrIterator.next();
+      RawAttribute attr = attrIterator.next();
       buffer.append(attr.getAttributeType());
       buffer.append("={\"");
 
@@ -537,11 +538,11 @@
     buffer.append(modifyOperation.getRawEntryDN().stringValue());
     buffer.append("\" mods={");
 
-    Iterator<LDAPModification> modIterator =
+    Iterator<RawModification> modIterator =
          modifyOperation.getRawModifications().iterator();
     if (modIterator.hasNext())
     {
-      LDAPModification mod = modIterator.next();
+      RawModification mod = modIterator.next();
       buffer.append(mod.getModificationType().toString());
       buffer.append(" attribute=");
       buffer.append(mod.getAttribute().getAttributeType());
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/api/PasswordValidatorTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/api/PasswordValidatorTestCase.java
index 079eb59..391e501 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/api/PasswordValidatorTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/api/PasswordValidatorTestCase.java
@@ -56,6 +56,7 @@
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.RawModification;
 import org.opends.server.types.ResultCode;
 
 import static org.testng.Assert.*;
@@ -511,7 +512,7 @@
     BindResponseProtocolOp bindResponse = message.getBindResponseProtocolOp();
     assertEquals(bindResponse.getResultCode(), 0);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("newPassword"));
     LDAPAttribute attr = new LDAPAttribute("userPassword", values);
@@ -589,7 +590,7 @@
     BindResponseProtocolOp bindResponse = message.getBindResponseProtocolOp();
     assertEquals(bindResponse.getResultCode(), 0);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("newPassword"));
     LDAPAttribute attr = new LDAPAttribute("userPassword", values);
@@ -671,7 +672,7 @@
     BindResponseProtocolOp bindResponse = message.getBindResponseProtocolOp();
     assertEquals(bindResponse.getResultCode(), 0);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("password"));
     LDAPAttribute attr = new LDAPAttribute("userPassword", values);
@@ -760,7 +761,7 @@
     BindResponseProtocolOp bindResponse = message.getBindResponseProtocolOp();
     assertEquals(bindResponse.getResultCode(), 0);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("newPassword"));
     LDAPAttribute attr = new LDAPAttribute("userPassword", values);
@@ -844,7 +845,7 @@
     BindResponseProtocolOp bindResponse = message.getBindResponseProtocolOp();
     assertEquals(bindResponse.getResultCode(), 0);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("password"));
     LDAPAttribute attr = new LDAPAttribute("userPassword", values);
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/MatchedValuesControlTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/MatchedValuesControlTest.java
index db62f92..651418b 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/MatchedValuesControlTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/MatchedValuesControlTest.java
@@ -33,12 +33,13 @@
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.schema.BooleanEqualityMatchingRule;
 import org.opends.server.schema.DistinguishedNameEqualityMatchingRule;
 import org.opends.server.schema.IntegerEqualityMatchingRule;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
+import org.opends.server.types.ByteString;
+import org.opends.server.types.LDAPException;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
@@ -50,7 +51,7 @@
 public class MatchedValuesControlTest
     extends ControlsTestCase
 {
-  
+
   /**
    * Check "enum" values
    */
@@ -63,9 +64,9 @@
     assertEquals(MatchedValuesFilter.LESS_OR_EQUAL_TYPE,(byte)0xA6);
     assertEquals(MatchedValuesFilter.PRESENT_TYPE ,(byte)0x87);
     assertEquals(MatchedValuesFilter.APPROXIMATE_MATCH_TYPE,(byte)0xA8);
-    assertEquals(MatchedValuesFilter.EXTENSIBLE_MATCH_TYPE,(byte)0xA9);                
+    assertEquals(MatchedValuesFilter.EXTENSIBLE_MATCH_TYPE,(byte)0xA9);
   }
-  
+
   @DataProvider(name = "equalityFilterData")
   public Object[][] createEqualityFilterData()
   {
@@ -84,7 +85,7 @@
       throws Exception
   {
     MatchedValuesFilter mvf;
-    // 
+    //
     // ( String rawAttributeType, ASN1OctetStringrawAssertionValue)
     //
     // Check null, null
@@ -143,7 +144,7 @@
       // excepted behavior
     }
 
-    // 
+    //
     // ( AttributeType attributeType, AttributeValue assertionValue
     //
     AttributeType attType = DirectoryServer.getAttributeType(type);
@@ -215,7 +216,7 @@
       // excepted behavior
     }
   }
-  
+
   @DataProvider(name = "substringsFilterData")
   public Object[][] createSubstringsFilterData()
   {
@@ -223,7 +224,7 @@
     l.add("subAny") ;
     l.add("o") ;
     l.add("fakesubAny");
-    
+
     return new Object[][]
     {
     { "description", "subInitial" ,l, "subFinal" },
@@ -231,7 +232,7 @@
     { "fakeobjecttype", "fakesubInitial" , l,"fakesubFinal"}, };
   }
 
-  
+
   /**
    * Test createEqualityFilter
    */
@@ -244,20 +245,20 @@
     String             rawAttTypeTest = type;
     AttributeType         attTypeTest = DirectoryServer.getAttributeType(type);
     ASN1OctetString       subInitialTest = new ASN1OctetString(subInitial);
-    List<ASN1OctetString> subAnyTest = 
-      new ArrayList<ASN1OctetString>(subAny.size());
+    List<ByteString> subAnyTest =
+      new ArrayList<ByteString>(subAny.size());
     for (String s : subAny)
     {
       subAnyTest.add(new ASN1OctetString(s));
     }
-    ASN1OctetString       subFinalTest = new ASN1OctetString(subFinal);
+    ByteString subFinalTest = new ASN1OctetString(subFinal);
 
     // test parameter
-    AttributeType         attTypeCurrent;
-    String             rawAttTypeTestCurrent;
-    ASN1OctetString       subInitialTestCurrent;
-    List<ASN1OctetString> subAnyTestCurrent;
-    ASN1OctetString       subFinalTestCurrent;
+    AttributeType    attTypeCurrent;
+    String           rawAttTypeTestCurrent;
+    ByteString       subInitialTestCurrent;
+    List<ByteString> subAnyTestCurrent;
+    ByteString       subFinalTestCurrent;
 
     for (int i = 0; i <= 15; i++)
     {
@@ -306,10 +307,10 @@
         }
         else
         {
-          List<ASN1OctetString> ret = mvf.getSubAnyElements();
+          List<ByteString> ret = mvf.getSubAnyElements();
           assertNotNull(ret);
           assertEquals(subAnyTestCurrent.size(), ret.size());
-          for (ASN1OctetString r : ret)
+          for (ByteString r : ret)
           {
             assertTrue(subAnyTestCurrent.contains(r));
           }
@@ -346,7 +347,7 @@
             ret = mvf.getSubAnyElements();
             assertNotNull(ret);
             assertEquals(subAnyTestCurrent.size(), ret.size());
-            for (ASN1OctetString r : ret)
+            for (ByteString r : ret)
             {
               assertTrue(subAnyTestCurrent.contains(r));
             }
@@ -370,7 +371,7 @@
       }
     }
   }
-  
+
   /**
    * Test GreaterOrEqualFilter
    */
@@ -379,7 +380,7 @@
       throws Exception
   {
     MatchedValuesFilter mvf;
-    // 
+    //
     // ( String rawAttributeType, ASN1OctetStringrawAssertionValue)
     //
     // Check null, null
@@ -446,7 +447,7 @@
       // excepted behavior
     }
 
-    // 
+    //
     // ( AttributeType attributeType, AttributeValue assertionValue
     //
     AttributeType attType = DirectoryServer.getAttributeType(type);
@@ -515,7 +516,7 @@
       // excepted behavior
     }
   }
-  
+
   /**
    * Test LessOrEqualFilter
    */
@@ -523,7 +524,7 @@
   public void checkLessOrEqualFilter(String type, String value)
       throws Exception
   {
-    // 
+    //
     // ( String rawAttributeType, ASN1OctetStringrawAssertionValue)
     //
     // Check null, null
@@ -581,7 +582,7 @@
     }
     ;
 
-    // 
+    //
     // ( AttributeType attributeType, AttributeValue assertionValue
     //
     AttributeType attType = DirectoryServer.getAttributeType(type);
@@ -649,7 +650,7 @@
       // excepted behavior
     }
   }
-  
+
   /**
    * Test PresentFilter
    */
@@ -657,7 +658,7 @@
   public void checkPresentFilter(
       String type, String value) throws Exception
   {
-    // 
+    //
     // ( String rawAttributeType)
     //
     // Check null
@@ -675,18 +676,18 @@
     {
       // excepted behavior
     }
-    
+
     // Check type
     mvf = MatchedValuesFilter.createPresentFilter(type);
     assertNotNull(mvf);
     assertEquals(mvf.getRawAttributeType(), type);
     assertEquals(mvf.getMatchType(), MatchedValuesFilter.PRESENT_TYPE);
-    
-    // 
+
+    //
     // ( AttributeType attributeType
     //
     AttributeType attType = DirectoryServer.getAttributeType(type);
-    
+
     // Check null
     try
     {
@@ -711,7 +712,7 @@
       assertEquals(mvf.getMatchType(), MatchedValuesFilter.PRESENT_TYPE);
     }
   }
-  
+
   /**
    * Test ApproximateFilter
    */
@@ -720,12 +721,12 @@
       throws Exception
   {
     MatchedValuesFilter mvf;
-    // 
+    //
     // ( String rawAttributeType, ASN1OctetStringrawAssertionValue)
     //
     // Check null, null
     try
-    { 
+    {
       mvf = MatchedValuesFilter.createApproximateFilter((String) null,
           (ASN1OctetString) null);
       assertTrue(false, "Expected NullPointerException");
@@ -779,7 +780,7 @@
       // excepted behavior
     }
 
-    // 
+    //
     // ( AttributeType attributeType, AttributeValue assertionValue
     //
     AttributeType attType = DirectoryServer.getAttributeType(type);
@@ -850,18 +851,18 @@
       // excepted behavior
     }
   }
-  
+
   @DataProvider(name = "extensibleMatchFilterData")
   public Object[][] createExtensibleMatchFilterData()
   {
-    
+
     return new Object[][]
     {
     { "description", new BooleanEqualityMatchingRule(), "description" },
     { "objectclass", new IntegerEqualityMatchingRule() ,"top" },
     { "fakeobjecttype", new DistinguishedNameEqualityMatchingRule(), "fakevalue" }, };
   }
-  
+
   /**
    * Test ExtensibleMatchFilter
    */
@@ -870,10 +871,10 @@
       String type, MatchingRule matchingRule, String value)
       throws Exception
   {
-    
+
     // input value
     String          rawAttTypeTest = type ;
-    AttributeType      attTypeTest = DirectoryServer.getAttributeType(type) ;   
+    AttributeType      attTypeTest = DirectoryServer.getAttributeType(type) ;
     String             matchingRuleIdTest = matchingRule.getOID() ;
     ASN1OctetString rawAttValueTest = (attTypeTest == null) ? null : new ASN1OctetString(value);
     AttributeValue     attValueTest = (attTypeTest == null) ? null : new AttributeValue(attTypeTest, value);
@@ -881,12 +882,12 @@
     // parameter used for the test.
     String          rawAttTypeTestCurrent;
     AttributeType      attTypeTestCurrent ;
-    String          rawMatchingRuleidTestCurrent ; 
+    String          rawMatchingRuleidTestCurrent ;
     MatchingRule        matchingRuleidTestCurrent ;
     ASN1OctetString rawAttValueTestCurrent;
     AttributeValue     attValueTestCurrent;
 
-    
+
     for (int i= 0 ; i <= 7 ; i++)
     {
       rawAttTypeTestCurrent = null;
@@ -895,14 +896,14 @@
       rawAttValueTestCurrent = null;
       attTypeTestCurrent = null;
       attValueTestCurrent = null ;
-      
+
       if ((i & 0x4) != 0) attTypeTestCurrent = attTypeTest;
       if ((i & 0x4) != 0) rawAttTypeTestCurrent = rawAttTypeTest;
       if ((i & 0x2) != 0) rawMatchingRuleidTestCurrent = matchingRuleIdTest;
       if ((i & 0x2) != 0) matchingRuleidTestCurrent = matchingRule ;
       if ((i & 0x1) != 0) rawAttValueTestCurrent = rawAttValueTest;
       if ((i & 0x1) != 0) attValueTestCurrent = attValueTest;
-      
+
       boolean exceptionExpected = (attTypeTestCurrent == null)
           || (attValueTestCurrent == null) || (matchingRuleidTestCurrent == null);
 
@@ -942,14 +943,14 @@
       }
     }
   }
-  
+
   /**
    * Check encode/decode method
    */
   private void checkEncodeDecode(MatchedValuesFilter mvf)
   {
     ASN1Element asn1Elt = mvf.encode() ;
-    try 
+    try
     {
       MatchedValuesFilter newMvf = MatchedValuesFilter.decode(asn1Elt) ;
       assertEquals(newMvf.toString(), mvf.toString());
@@ -958,6 +959,6 @@
     {
       assertTrue(false, "Unexpected LDAPException ; msg=" + e.getMessage());
     }
-    
+
   }
 }
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/PasswordControlTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/PasswordControlTest.java
index 08a589a..7869e0c 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/PasswordControlTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/PasswordControlTest.java
@@ -33,8 +33,8 @@
 
 import org.opends.server.protocols.asn1.ASN1Boolean;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.types.Control;
+import org.opends.server.types.LDAPException;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
@@ -83,8 +83,8 @@
       assertEquals(val.toString(), expected);
     }
   }
-  
-  
+
+
   /**
    * Test If we have only the required values
    */
@@ -104,7 +104,7 @@
       assertTrue(exceptedValues.containsKey(val.intValue()));
     }
   }
-  
+
   /**
    * Test invalid int values
    */
@@ -146,13 +146,13 @@
     {
       PasswordPolicyWarningType val = PasswordPolicyWarningType.valueOf(i);
       String expected = expectedValues.get(i);
-      
+
       assertEquals(val.toString(), expected);
       assertEquals(i, val.getType());
     }
   }
-  
-  
+
+
   /**
    * Test If we have only the required values
    */
@@ -172,7 +172,7 @@
       assertTrue(exceptedValues.containsValue(val.toString()));
     }
   }
-  
+
   /**
    * Test invalid int values
    */
@@ -194,10 +194,10 @@
         PasswordPolicyWarningType val = PasswordPolicyWarningType.valueOf(b);
         assertNull(val);
       }
-      
+
     }
   }
-  
+
   /**
    * Create values for PasswordControl
    */
@@ -212,7 +212,7 @@
      { OID_NS_PASSWORD_EXPIRING, false, 2},
     };
   }
-  
+
   /**
    * Test OID
    */
@@ -221,9 +221,9 @@
   {
     assertEquals(OID_NS_PASSWORD_EXPIRED,     "2.16.840.1.113730.3.4.4");
     assertEquals(OID_NS_PASSWORD_EXPIRING,    "2.16.840.1.113730.3.4.5");
-    //assertEquals(OID_PASSWORD_POLICY_CONTROL, ""); 
+    //assertEquals(OID_PASSWORD_POLICY_CONTROL, "");
   }
-  
+
   /**
    * Test "Netscape password expired control" implementation
    */
@@ -249,7 +249,7 @@
     assertNotNull(pec);
     assertEquals(pec.isCritical(),isCritical);
     assertEquals(pec.getOID(),oid);
-    
+
     control.setValue(new ASN1Boolean(true).decodeAsOctetString());
     try
     {
@@ -265,9 +265,9 @@
     }
 
     // Check toString
-    assertEquals("PasswordExpiredControl()", pec.toString());  
+    assertEquals("PasswordExpiredControl()", pec.toString());
   }
-  
+
   /**
    * Test "Netscape password expired control" implementation
    */
@@ -304,7 +304,7 @@
       assertTrue(true,
           "shouldn't be allow to create PasswordExpiringControl without value");
     }
-    
+
     control.setValue(new ASN1OctetString("invalid value"));
     try
     {
@@ -327,7 +327,7 @@
     assertEquals(newPec.getOID(), oid);
     assertEquals(newPec.getSecondsUntilExpiration(), sec);
   }
-  
+
   /**
    * Test PasswordPolicyRequestControl
    */
@@ -353,7 +353,7 @@
     assertNotNull(pec);
     assertEquals(pec.isCritical(),isCritical);
     assertEquals(pec.getOID(),oid);
-    
+
     control.setValue(new ASN1Boolean(true).decodeAsOctetString());
     try
     {
@@ -369,10 +369,10 @@
     }
 
     // Check toString
-    assertEquals("PasswordPolicyRequestControl()", pec.toString());  
+    assertEquals("PasswordPolicyRequestControl()", pec.toString());
   }
-  
-  
+
+
   /**
    * Create values for PasswordControl
    */
@@ -389,7 +389,7 @@
      { OID_NS_PASSWORD_EXPIRING, false,     2}
     };
   }
-  
+
   /**
    * Test PasswordPolicyResponseControl
    */
@@ -405,8 +405,8 @@
     assertEquals(pprc.getOID(), OID_PASSWORD_POLICY_CONTROL);
     assertNull(pprc.getWarningType());
     assertNull(pprc.getErrorType());
-    
-    
+
+
     // check constructor PasswordPolicyResponseControl
     // (PasswordPolicyWarningType warningType,
     //    int warningValue,
@@ -422,7 +422,7 @@
         assertEquals(pprc.getWarningValue(),warningValue);
       }
     }
-    
+
     // check constructor PasswordPolicyResponseControl
     // (PString oid, boolean isCritical,
     //     PasswordPolicyWarningType warningType,
@@ -441,8 +441,8 @@
         assertEquals(pprc.getWarningValue(), warningValue);
       }
     }
-    
-    
+
+
     // check decode
     Control control ;
     for (PasswordPolicyErrorType errorType : PasswordPolicyErrorType.values())
@@ -457,9 +457,9 @@
         assertEquals(warningType, pprc.getWarningType());
         assertEquals(errorType, pprc.getErrorType());
         assertEquals(pprc.getWarningValue(), warningValue);
-        
+
         // check to String
-        String toString = 
+        String toString =
           "PasswordPolicyResponseControl(" +
           warningType.toString() +
           "=" +
@@ -468,8 +468,8 @@
           errorType.toString() +
           ")" ;
         assertEquals(toString, pprc.toString()) ;
-        
-        
+
+
         // check null value for the control
         try
         {
@@ -482,8 +482,8 @@
           // normal case
           assertTrue(true,"the control should have a value");
         }
-        
-        
+
+
         // check null warning type
         control = new PasswordPolicyResponseControl(oid, isCritical,
             null, warningValue, errorType);
@@ -496,7 +496,7 @@
         {
           assertTrue(false,"We should be able to decode the control");
         }
-        
+
         // check null error type
         control = new PasswordPolicyResponseControl(oid, isCritical,
             warningType, warningValue, null);
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/PersistentSearchControlTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/PersistentSearchControlTest.java
index c78c1f6..0e6ed69 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/PersistentSearchControlTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/PersistentSearchControlTest.java
@@ -37,9 +37,9 @@
 import static org.opends.server.util.ServerConstants.OID_NS_PASSWORD_EXPIRED;
 import static org.testng.Assert.*;
 
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.types.Control;
 import org.opends.server.types.DN;
+import org.opends.server.types.LDAPException;
 
 /**
  * Test ChangeNumber and ChangeNumberGenerator
@@ -352,7 +352,7 @@
     }
   }
 
-  
+
   /**
    * Create values for EntryChangeNotificationControl
    */
@@ -389,7 +389,7 @@
       assertNull(ecnc.getPreviousDN()) ;
       assertEquals(false, ecnc.isCritical()) ;
       checkEntryChangeNotificationControlToString(ecnc);
-      
+
       // also check encode
       try
       {
@@ -430,7 +430,7 @@
       assertEquals(dn, ecnc.getPreviousDN());
       assertEquals(false, ecnc.isCritical()) ;
       checkEntryChangeNotificationControlToString(ecnc);
-      
+
       // also check encode
       try
       {
@@ -456,7 +456,7 @@
         }
       }
     }
-    
+
 
     // Test contructor EntryChangeNotificationControl(String oid, boolean
     // isCritical, PersistentSearchChangeType changeType,
@@ -469,10 +469,10 @@
       assertEquals(oid, ecnc.getOID());
       assertEquals(changeNumber, ecnc.getChangeNumber());
       assertEquals(type, ecnc.getChangeType());
-      assertEquals(dn, ecnc.getPreviousDN());   
+      assertEquals(dn, ecnc.getPreviousDN());
       assertEquals(isCritical, ecnc.isCritical()) ;
       checkEntryChangeNotificationControlToString(ecnc);
-      
+
       // also check encode
       try
       {
@@ -498,24 +498,24 @@
         }
       }
     }
-    
+
     // check setPreviousDN
     ecnc.setPreviousDN(null) ;
     assertNull(ecnc.getPreviousDN()) ;
     ecnc.setPreviousDN(dn) ;
     assertEquals(dn, ecnc.getPreviousDN());
-    
+
     // Check setChangeNumber
     ecnc.setChangeNumber(changeNumber +1) ;
     assertEquals(changeNumber +1, ecnc.getChangeNumber());
-    
+
     // Check setChangeType
     for (PersistentSearchChangeType type : types)
     {
       ecnc.setChangeType(type) ;
       assertEquals(type, ecnc.getChangeType());
     }
-    
+
     // Check error on decode
     try
     {
@@ -528,7 +528,7 @@
       assertTrue(true,"couldn't decode a control with null");
     }
   }
-  
+
   private void checkEntryChangeNotificationControlToString(EntryChangeNotificationControl ecnc)
   {
     String toString ="EntryChangeNotificationControl(changeType=";
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/ProxiedAuthV1ControlTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/ProxiedAuthV1ControlTestCase.java
index d6ea36b..3918008 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/ProxiedAuthV1ControlTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/ProxiedAuthV1ControlTestCase.java
@@ -37,10 +37,10 @@
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Sequence;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.types.Control;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DN;
+import org.opends.server.types.LDAPException;
 
 import static org.testng.Assert.*;
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/ProxiedAuthV2ControlTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/ProxiedAuthV2ControlTestCase.java
index 13b6e9b..7dda2bc 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/ProxiedAuthV2ControlTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/ProxiedAuthV2ControlTestCase.java
@@ -33,10 +33,10 @@
 
 import org.opends.server.TestCaseUtils;
 import org.opends.server.protocols.asn1.ASN1OctetString;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.types.Control;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DN;
+import org.opends.server.types.LDAPException;
 
 import static org.testng.Assert.*;
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/AbandonOperationTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/AbandonOperationTestCase.java
index 9ea7723..55fc9b7 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/AbandonOperationTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/AbandonOperationTestCase.java
@@ -73,6 +73,9 @@
 import org.opends.server.types.DereferencePolicy;
 import org.opends.server.types.Entry;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.Operation;
+import org.opends.server.types.RawAttribute;
+import org.opends.server.types.RawModification;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchScope;
 
@@ -318,7 +321,7 @@
     // Create an add request and send it to the server.  Make sure to include
     // the delay request control so it won't complete before we can send the
     // abandon request.
-    ArrayList<LDAPAttribute> attributes = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attributes = new ArrayList<RawAttribute>();
 
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>(2);
     values.add(new ASN1OctetString("top"));
@@ -626,7 +629,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>(1);
     values.add(new ASN1OctetString("foo"));
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>(1);
+    ArrayList<RawModification> mods = new ArrayList<RawModification>(1);
     mods.add(new LDAPModification(ModificationType.REPLACE,
                                   new LDAPAttribute("description", values)));
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/AddOperationTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/AddOperationTestCase.java
index acec225..a942487 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/AddOperationTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/AddOperationTestCase.java
@@ -65,6 +65,8 @@
 import org.opends.server.types.Entry;
 import org.opends.server.types.LockManager;
 import org.opends.server.types.ObjectClass;
+import org.opends.server.types.Operation;
+import org.opends.server.types.RawAttribute;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.WritabilityMode;
 import org.opends.server.types.DirectoryException;
@@ -106,7 +108,7 @@
 
     ArrayList<Control> noControls = new ArrayList<Control>();
 
-    ArrayList<LDAPAttribute> ldapAttrList = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> ldapAttrList = new ArrayList<RawAttribute>();
 
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
@@ -206,7 +208,7 @@
     InternalClientConnection conn =
          InternalClientConnection.getRootConnection();
 
-    ArrayList<LDAPAttribute> ldapAttrList = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> ldapAttrList = new ArrayList<RawAttribute>();
 
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
@@ -297,12 +299,12 @@
   @Test(dataProvider = "addOperations")
   public void testGetAndSetRawAttributes(AddOperation addOperation)
   {
-    List<LDAPAttribute> rawAttrs = addOperation.getRawAttributes();
+    List<RawAttribute> rawAttrs = addOperation.getRawAttributes();
     assertNotNull(rawAttrs);
     assertFalse(rawAttrs.isEmpty());
 
-    ArrayList<LDAPAttribute> copiedAttrs =
-      new ArrayList<LDAPAttribute>(rawAttrs);
+    ArrayList<RawAttribute> copiedAttrs =
+      new ArrayList<RawAttribute>(rawAttrs);
     addOperation.setRawAttributes(copiedAttrs);
 
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
@@ -310,7 +312,7 @@
     addOperation.addRawAttribute(new LDAPAttribute("description", values));
 
     boolean found = false;
-    for (LDAPAttribute a : addOperation.getRawAttributes())
+    for (RawAttribute a : addOperation.getRawAttributes())
     {
       if (a.getAttributeType().equalsIgnoreCase("description"))
       {
@@ -323,7 +325,7 @@
     addOperation.setRawAttributes(rawAttrs);
 
     found = false;
-    for (LDAPAttribute a : addOperation.getRawAttributes())
+    for (RawAttribute a : addOperation.getRawAttributes())
     {
       if (a.getAttributeType().equalsIgnoreCase("description"))
       {
@@ -601,7 +603,7 @@
   {
     TestCaseUtils.initializeTestBackend(true);
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
 
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
@@ -666,7 +668,7 @@
   {
     TestCaseUtils.initializeTestBackend(true);
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
 
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
@@ -699,7 +701,7 @@
   {
     TestCaseUtils.initializeTestBackend(true);
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
 
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
@@ -732,7 +734,7 @@
   {
     TestCaseUtils.initializeTestBackend(true);
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
 
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
@@ -765,7 +767,7 @@
   {
     TestCaseUtils.initializeTestBackend(true);
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
 
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
@@ -798,7 +800,7 @@
   {
     TestCaseUtils.initializeTestBackend(true);
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
 
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
@@ -849,7 +851,7 @@
     assertEquals(bindResponse.getResultCode(), 0);
 
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
     values.add(new ASN1OctetString("organizationalUnit"));
@@ -904,7 +906,7 @@
   {
     TestCaseUtils.initializeTestBackend(true);
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
 
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
@@ -977,7 +979,7 @@
   {
     TestCaseUtils.initializeTestBackend(true);
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
 
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
@@ -1019,7 +1021,7 @@
   {
     TestCaseUtils.initializeTestBackend(true);
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
 
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
@@ -1061,7 +1063,7 @@
   {
     TestCaseUtils.initializeTestBackend(true);
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
 
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
@@ -1140,7 +1142,7 @@
   {
     TestCaseUtils.initializeTestBackend(true);
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
 
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
@@ -1693,7 +1695,7 @@
     assertEquals(bindResponse.getResultCode(), 0);
 
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
     values.add(new ASN1OctetString("organizationalUnit"));
@@ -1844,7 +1846,7 @@
     assertEquals(bindResponse.getResultCode(), 0);
 
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
     values.add(new ASN1OctetString("organizationalUnit"));
@@ -2063,7 +2065,7 @@
     assertEquals(bindResponse.getResultCode(), 0);
 
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
     values.add(new ASN1OctetString("organizationalUnit"));
@@ -2126,7 +2128,7 @@
     assertEquals(bindResponse.getResultCode(), 0);
 
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
     values.add(new ASN1OctetString("organizationalUnit"));
@@ -2190,7 +2192,7 @@
     assertEquals(bindResponse.getResultCode(), 0);
 
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
     values.add(new ASN1OctetString("organizationalUnit"));
@@ -2254,7 +2256,7 @@
     assertEquals(bindResponse.getResultCode(), 0);
 
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
     values.add(new ASN1OctetString("organizationalUnit"));
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java
index 03d3993..2c0d57f 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/BindOperationTestCase.java
@@ -62,6 +62,7 @@
 import org.opends.server.types.Entry;
 import org.opends.server.types.Modification;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.Operation;
 import org.opends.server.types.OperationType;
 import org.opends.server.types.ResultCode;
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/CompareOperationTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/CompareOperationTestCase.java
index 13f4618..6664ae4 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/CompareOperationTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/CompareOperationTestCase.java
@@ -38,6 +38,7 @@
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
 import org.opends.server.types.LockManager;
+import org.opends.server.types.Operation;
 import org.opends.server.TestCaseUtils;
 import org.opends.server.util.ServerConstants;
 import org.opends.server.controls.LDAPAssertionRequestControl;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/DeleteOperationTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/DeleteOperationTestCase.java
index 9b153b1..c18f578 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/DeleteOperationTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/DeleteOperationTestCase.java
@@ -57,6 +57,7 @@
 import org.opends.server.types.DN;
 import org.opends.server.types.Entry;
 import org.opends.server.types.LockManager;
+import org.opends.server.types.Operation;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.WritabilityMode;
 import org.opends.server.types.DirectoryException;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/ModifyOperationTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/ModifyOperationTestCase.java
index 439b150..b97f9fa 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/ModifyOperationTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/ModifyOperationTestCase.java
@@ -102,7 +102,7 @@
     ArrayList<Control> noControls = new ArrayList<Control>();
 
 
-    ArrayList<LDAPModification> ldapMods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> ldapMods = new ArrayList<RawModification>();
     ArrayList<ASN1OctetString> ldapValues = new ArrayList<ASN1OctetString>();
     ldapValues.add(new ASN1OctetString("foo"));
     LDAPAttribute ldapAttr = new LDAPAttribute("description", ldapValues);
@@ -121,7 +121,7 @@
                                    conn.nextMessageID(), noControls,
                                    new ASN1OctetString("o=test"), ldapMods));
 
-    ldapMods = new ArrayList<LDAPModification>();
+    ldapMods = new ArrayList<RawModification>();
     ldapMods.add(new LDAPModification(ModificationType.DELETE, ldapAttr));
 
     opList.add(new ModifyOperation(conn, conn.nextOperationID(),
@@ -137,7 +137,7 @@
                                    conn.nextMessageID(), noControls,
                                    new ASN1OctetString("o=test"), ldapMods));
 
-    ldapMods = new ArrayList<LDAPModification>();
+    ldapMods = new ArrayList<RawModification>();
     ldapMods.add(new LDAPModification(ModificationType.REPLACE, ldapAttr));
 
     opList.add(new ModifyOperation(conn, conn.nextOperationID(),
@@ -153,7 +153,7 @@
                                    conn.nextMessageID(), noControls,
                                    new ASN1OctetString("o=test"), ldapMods));
 
-    ldapMods = new ArrayList<LDAPModification>();
+    ldapMods = new ArrayList<RawModification>();
     ArrayList<ASN1OctetString> values2 = new ArrayList<ASN1OctetString>();
     values2.add(new ASN1OctetString("bar"));
     LDAPAttribute ldapAttr2 = new LDAPAttribute("description", values2);
@@ -173,7 +173,7 @@
                                    conn.nextMessageID(), noControls,
                                    new ASN1OctetString("o=test"), ldapMods));
 
-    ldapMods = new ArrayList<LDAPModification>();
+    ldapMods = new ArrayList<RawModification>();
     ldapAttr2 = new LDAPAttribute("cn", values2);
     ldapMods.add(new LDAPModification(ModificationType.REPLACE, ldapAttr));
     ldapMods.add(new LDAPModification(ModificationType.REPLACE, ldapAttr2));
@@ -361,7 +361,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("description", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -435,10 +435,10 @@
   public void testGetAndSetRawModifications(ModifyOperation modifyOperation)
          throws Exception
   {
-    List<LDAPModification> rawMods = modifyOperation.getRawModifications();
+    List<RawModification> rawMods = modifyOperation.getRawModifications();
 
-    List<LDAPModification> clonedMods =
-         new ArrayList<LDAPModification>(rawMods);
+    List<RawModification> clonedMods =
+         new ArrayList<RawModification>(rawMods);
     modifyOperation.setRawModifications(clonedMods);
 
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
@@ -567,7 +567,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("description", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -592,7 +592,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("description", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -622,7 +622,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("mail", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -653,7 +653,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("mail", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -680,7 +680,7 @@
     InternalClientConnection conn =
          InternalClientConnection.getRootConnection();
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
 
     ModifyOperation modifyOperation =
          conn.processModify(new ASN1OctetString(baseDN), mods);
@@ -713,7 +713,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("description", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -758,7 +758,7 @@
     values.add(new ASN1OctetString("test2"));
     LDAPAttribute attr = new LDAPAttribute("o", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.ADD, attr));
 
     ModifyOperation modifyOperation =
@@ -808,7 +808,7 @@
     values.add(new ASN1OctetString("test"));
     LDAPAttribute attr = new LDAPAttribute("dc;lang-en-us", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.ADD, attr));
 
     ModifyOperation modifyOperation =
@@ -867,7 +867,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("displayName", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.ADD, attr));
 
     ModifyOperation modifyOperation =
@@ -919,7 +919,7 @@
     values.add(new ASN1OctetString("false"));
     LDAPAttribute attr = new LDAPAttribute("ds-pwp-account-disabled", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.ADD, attr));
 
     ModifyOperation modifyOperation =
@@ -971,7 +971,7 @@
     values.add(new ASN1OctetString("bar"));
     LDAPAttribute attr = new LDAPAttribute("displayName", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -1024,7 +1024,7 @@
     values.add(new ASN1OctetString("false"));
     LDAPAttribute attr = new LDAPAttribute("ds-pwp-account-disabled", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -1075,7 +1075,7 @@
     values.add(new ASN1OctetString("Test"));
     LDAPAttribute attr = new LDAPAttribute("givenName", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.ADD, attr));
 
     ModifyOperation modifyOperation =
@@ -1127,7 +1127,7 @@
     values.add(new ASN1OctetString("Foo"));
     LDAPAttribute attr = new LDAPAttribute("mail", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -1179,7 +1179,7 @@
     values.add(new ASN1OctetString("invaliddn"));
     LDAPAttribute attr = new LDAPAttribute("manager", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -1230,7 +1230,7 @@
     values.add(new ASN1OctetString("invaliddn"));
     LDAPAttribute attr = new LDAPAttribute("manager", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.ADD, attr));
 
     ModifyOperation modifyOperation =
@@ -1281,7 +1281,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("dc", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.ADD, attr));
 
     ModifyOperation modifyOperation =
@@ -1334,7 +1334,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("dc", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.ADD, attr));
 
     values = new ArrayList<ASN1OctetString>();
@@ -1390,7 +1390,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("uid", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -1438,7 +1438,7 @@
 
 
     LDAPAttribute attr = new LDAPAttribute("uid");
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     ModifyOperation modifyOperation =
@@ -1489,7 +1489,7 @@
     values.add(new ASN1OctetString("test.user"));
     LDAPAttribute attr = new LDAPAttribute("uid", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     ModifyOperation modifyOperation =
@@ -1540,7 +1540,7 @@
     values.add(new ASN1OctetString("Foo"));
     LDAPAttribute attr = new LDAPAttribute("givenName", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -1588,7 +1588,7 @@
 
 
     LDAPAttribute attr = new LDAPAttribute("givenName");
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     ModifyOperation modifyOperation =
@@ -1636,7 +1636,7 @@
 
 
     LDAPAttribute attr = new LDAPAttribute("displayName");
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     ModifyOperation modifyOperation =
@@ -1689,7 +1689,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("mail", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     ModifyOperation modifyOperation =
@@ -1741,7 +1741,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("mail", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     ModifyOperation modifyOperation =
@@ -1795,7 +1795,7 @@
     values.add(new ASN1OctetString("bar"));
     LDAPAttribute attr = new LDAPAttribute("mail", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     ModifyOperation modifyOperation =
@@ -1843,7 +1843,7 @@
 
 
     LDAPAttribute attr = new LDAPAttribute("sn");
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     ModifyOperation modifyOperation =
@@ -1894,7 +1894,7 @@
     values.add(new ASN1OctetString("User"));
     LDAPAttribute attr = new LDAPAttribute("sn", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     ModifyOperation modifyOperation =
@@ -1946,7 +1946,7 @@
     values.add(new ASN1OctetString("bar"));
     LDAPAttribute attr = new LDAPAttribute("mail", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -1998,7 +1998,7 @@
     values.add(new ASN1OctetString("test.user"));
     LDAPAttribute attr = new LDAPAttribute("uid", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -2070,7 +2070,7 @@
     values.add(new ASN1OctetString("Test User"));
     LDAPAttribute attr = new LDAPAttribute("cn", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
     mods.add(new LDAPModification(ModificationType.ADD, attr));
 
@@ -2146,7 +2146,7 @@
     values.add(new ASN1OctetString("X"));
     LDAPAttribute attr = new LDAPAttribute("givenName;lang-fr", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     ModifyOperation modifyOperation =
@@ -2215,7 +2215,7 @@
 
 
     LDAPAttribute attr = new LDAPAttribute("mail");
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -2263,7 +2263,7 @@
 
 
     LDAPAttribute attr = new LDAPAttribute("mail");
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -2314,7 +2314,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("mail", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -2365,7 +2365,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("mail", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     values = new ArrayList<ASN1OctetString>();
@@ -2422,7 +2422,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("mail", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     values = new ArrayList<ASN1OctetString>();
@@ -2478,7 +2478,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("mail", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     values = new ArrayList<ASN1OctetString>();
@@ -2531,7 +2531,7 @@
 
 
     LDAPAttribute attr = new LDAPAttribute("displayName");
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     ModifyOperation modifyOperation =
@@ -2582,7 +2582,7 @@
     values.add(new ASN1OctetString("Foo"));
     LDAPAttribute attr = new LDAPAttribute("displayName", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     ModifyOperation modifyOperation =
@@ -2630,7 +2630,7 @@
 
 
     LDAPAttribute attr = new LDAPAttribute("objectClass");
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     ModifyOperation modifyOperation =
@@ -2678,7 +2678,7 @@
 
 
     LDAPAttribute attr = new LDAPAttribute("objectClass");
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -2723,7 +2723,7 @@
     values.add(new ASN1OctetString("organizationalUnit"));
     LDAPAttribute attr = new LDAPAttribute("objectClass", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     ModifyOperation modifyOperation =
@@ -2767,7 +2767,7 @@
     values.add(new ASN1OctetString("organization"));
     LDAPAttribute attr = new LDAPAttribute("objectClass", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.ADD, attr));
 
     ModifyOperation modifyOperation =
@@ -2818,7 +2818,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("1"));
     LDAPAttribute attr = new LDAPAttribute("employeeNumber", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.INCREMENT, attr));
 
     ModifyOperation modifyOperation =
@@ -2887,7 +2887,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("10"));
     LDAPAttribute attr = new LDAPAttribute("employeeNumber", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.INCREMENT, attr));
 
     ModifyOperation modifyOperation =
@@ -2956,7 +2956,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("-1"));
     LDAPAttribute attr = new LDAPAttribute("employeeNumber", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.INCREMENT, attr));
 
     ModifyOperation modifyOperation =
@@ -3023,7 +3023,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("1"));
     LDAPAttribute attr = new LDAPAttribute("displayName", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.INCREMENT, attr));
 
     ModifyOperation modifyOperation =
@@ -3074,7 +3074,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("notnumeric"));
     LDAPAttribute attr = new LDAPAttribute("mail", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.INCREMENT, attr));
 
     ModifyOperation modifyOperation =
@@ -3126,7 +3126,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("1"));
     LDAPAttribute attr = new LDAPAttribute("roomNumber", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.INCREMENT, attr));
 
     ModifyOperation modifyOperation =
@@ -3175,7 +3175,7 @@
 
 
     LDAPAttribute attr = new LDAPAttribute("roomNumber");
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.INCREMENT, attr));
 
     ModifyOperation modifyOperation =
@@ -3227,7 +3227,7 @@
     values.add(new ASN1OctetString("1"));
     values.add(new ASN1OctetString("2"));
     LDAPAttribute attr = new LDAPAttribute("roomNumber", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.INCREMENT, attr));
 
     ModifyOperation modifyOperation =
@@ -3277,7 +3277,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("1"));
     LDAPAttribute attr = new LDAPAttribute("employeeNumber", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.INCREMENT, attr));
 
     ModifyOperation modifyOperation =
@@ -3330,7 +3330,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("extensibleObject"));
     LDAPAttribute attr = new LDAPAttribute("objectClass", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     ModifyOperation modifyOperation =
@@ -3386,7 +3386,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("extensibleObject"));
     LDAPAttribute attr = new LDAPAttribute("objectClass", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.ADD, attr));
 
     ModifyOperation modifyOperation =
@@ -3441,7 +3441,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("inetOrgPerson"));
     LDAPAttribute attr = new LDAPAttribute("objectClass", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.ADD, attr));
 
     ModifyOperation modifyOperation =
@@ -3493,7 +3493,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("organizationalUnit"));
     LDAPAttribute attr = new LDAPAttribute("objectClass", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.DELETE, attr));
 
     ModifyOperation modifyOperation =
@@ -3559,7 +3559,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("12345678-1234-1234-1234-1234567890ab"));
     LDAPAttribute attr = new LDAPAttribute("entryUUID", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     long modifyRequests  = ldapStatistics.getModifyRequests();
@@ -3624,7 +3624,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("extensibleObject"));
     LDAPAttribute attr = new LDAPAttribute("objectClass", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.ADD, attr));
 
     ModifyOperation modifyOperation =
@@ -3680,7 +3680,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("extensibleObject"));
     LDAPAttribute attr = new LDAPAttribute("objectClass", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.ADD, attr));
 
     ModifyOperation modifyOperation =
@@ -3753,7 +3753,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("extensibleObject"));
     LDAPAttribute attr = new LDAPAttribute("objectClass", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.ADD, attr));
 
     long modifyRequests  = ldapStatistics.getModifyRequests();
@@ -3821,7 +3821,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("extensibleObject"));
     LDAPAttribute attr = new LDAPAttribute("objectClass", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.ADD, attr));
 
     ModifyOperation modifyOperation =
@@ -3878,7 +3878,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("extensibleObject"));
     LDAPAttribute attr = new LDAPAttribute("objectClass", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.ADD, attr));
 
     ModifyOperation modifyOperation =
@@ -3952,7 +3952,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("extensibleObject"));
     LDAPAttribute attr = new LDAPAttribute("objectClass", values);
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.ADD, attr));
 
     long modifyRequests  = ldapStatistics.getModifyRequests();
@@ -4001,7 +4001,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("description", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -4039,7 +4039,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("dc", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -4071,7 +4071,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("mail", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyOperation modifyOperation =
@@ -4110,7 +4110,7 @@
       values.add(new ASN1OctetString("foo"));
       LDAPAttribute attr = new LDAPAttribute("mail", values);
 
-      ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+      ArrayList<RawModification> mods = new ArrayList<RawModification>();
       mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
       ModifyOperation modifyOperation =
@@ -4157,7 +4157,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("mail", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyRequestProtocolOp modifyRequest =
@@ -4216,7 +4216,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("description", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyRequestProtocolOp modifyRequest =
@@ -4276,7 +4276,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("mail", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyRequestProtocolOp modifyRequest =
@@ -4336,7 +4336,7 @@
     values.add(new ASN1OctetString("foo"));
     LDAPAttribute attr = new LDAPAttribute("mail", values);
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE, attr));
 
     ModifyRequestProtocolOp modifyRequest =
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/OperationTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/OperationTestCase.java
index e50edcb..5c8fab6 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/OperationTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/OperationTestCase.java
@@ -39,6 +39,7 @@
 import org.opends.server.protocols.ldap.LDAPConnectionHandler;
 import org.opends.server.protocols.ldap.LDAPStatistics;
 import org.opends.server.types.Control;
+import org.opends.server.types.Operation;
 import org.opends.server.types.ResultCode;
 
 import static org.testng.Assert.*;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/RejectUnauthReqTests.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/RejectUnauthReqTests.java
index eaa0697..8c1c0a5 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/RejectUnauthReqTests.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/RejectUnauthReqTests.java
@@ -40,13 +40,13 @@
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.types.DN;
 import org.opends.server.types.AuthenticationInfo;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.ResultCode;
 import org.opends.server.protocols.asn1.ASN1Reader;
 import org.opends.server.protocols.asn1.ASN1Writer;
 import org.opends.server.protocols.ldap.LDAPControl;
 import org.opends.server.protocols.ldap.LDAPMessage;
 import org.opends.server.protocols.ldap.UnbindRequestProtocolOp;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.tools.*;
 import org.testng.annotations.*;
 import static org.testng.Assert.*;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/UnbindOperationTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/UnbindOperationTestCase.java
index 1a62dd3..c759340 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/core/UnbindOperationTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/core/UnbindOperationTestCase.java
@@ -38,6 +38,7 @@
 import org.opends.server.types.CancelRequest;
 import org.opends.server.types.CancelResult;
 import org.opends.server.types.Control;
+import org.opends.server.types.Operation;
 
 import static org.testng.Assert.*;
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/CancelExtendedOperationTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/CancelExtendedOperationTestCase.java
index b916f75..4d66711 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/CancelExtendedOperationTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/CancelExtendedOperationTestCase.java
@@ -74,6 +74,8 @@
 import org.opends.server.types.Entry;
 import org.opends.server.types.Modification;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.RawAttribute;
+import org.opends.server.types.RawModification;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchScope;
 
@@ -137,7 +139,7 @@
     // Create an add request and send it to the server.  Make sure to include
     // the delay request control so it won't complete before we can send the
     // cancel request.
-    ArrayList<LDAPAttribute> attributes = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attributes = new ArrayList<RawAttribute>();
 
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>(2);
     values.add(new ASN1OctetString("top"));
@@ -468,7 +470,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>(1);
     values.add(new ASN1OctetString("foo"));
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>(1);
+    ArrayList<RawModification> mods = new ArrayList<RawModification>(1);
     mods.add(new LDAPModification(ModificationType.REPLACE,
                                   new LDAPAttribute("description", values)));
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExactMatchIdentityMapperTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExactMatchIdentityMapperTestCase.java
index d3fafaa..3fa63a2 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExactMatchIdentityMapperTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/ExactMatchIdentityMapperTestCase.java
@@ -58,6 +58,7 @@
 import org.opends.server.types.Entry;
 import org.opends.server.types.InitializationException;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.RawModification;
 import org.opends.server.types.ResultCode;
 
 import static org.testng.Assert.*;
@@ -914,7 +915,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("cn"));
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE,
                                   new LDAPAttribute("ds-cfg-match-attribute",
                                                     values)));
@@ -999,7 +1000,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("dc=example,dc=com"));
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE,
                                   new LDAPAttribute("ds-cfg-match-base-dn",
                                                     values)));
@@ -1052,7 +1053,7 @@
          throws Exception
   {
     // Create a modification to remove the match attribute.
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE,
                                   new LDAPAttribute("ds-cfg-match-attribute")));
     InternalClientConnection conn =
@@ -1079,7 +1080,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("undefinedAttribute"));
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE,
                                   new LDAPAttribute("ds-cfg-match-attribute",
                                                     values)));
@@ -1107,7 +1108,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("invalidDN"));
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE,
                                   new LDAPAttribute("ds-cfg-match-base-dn",
                                                     values)));
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/TestPasswordValidator.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/TestPasswordValidator.java
index a96370b..f7e5d05 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/TestPasswordValidator.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/extensions/TestPasswordValidator.java
@@ -33,10 +33,10 @@
 import org.opends.server.admin.std.server.PasswordValidatorCfg;
 import org.opends.server.api.PasswordValidator;
 import org.opends.server.config.ConfigEntry;
-import org.opends.server.core.Operation;
 import org.opends.server.types.ByteString;
 import org.opends.server.types.Entry;
 import org.opends.server.types.InitializationException;
+import org.opends.server.types.Operation;
 
 
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/messages/UnregisteredMessageIDsTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/messages/UnregisteredMessageIDsTestCase.java
index 3c7b284..f90abdd 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/messages/UnregisteredMessageIDsTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/messages/UnregisteredMessageIDsTestCase.java
@@ -70,7 +70,8 @@
    * Look in the build filesystem for files in the org.opends.server.messages
    * package.  Dynamically load all of those classes and use reflection to look
    * at all fields in those classes.  For each field, make sure that it has a
-   * corresponding message registered with the server.
+   * corresponding message registered with the server.  Also, look at all of the
+   * strings and make sure that they do not end with periods.
    *
    * @throws  Exception  If an unexpected problem occurs.
    */
@@ -101,6 +102,7 @@
     assertFalse(classNames.isEmpty());
 
     LinkedList<String> unregisteredMessageIDs = new LinkedList<String>();
+    LinkedList<String> idsEndingWithPeriods = new LinkedList<String>();
     for (String className : classNames)
     {
       Class c = Class.forName(className);
@@ -115,19 +117,25 @@
             String fieldName  = className + "." + field.getName();
             int    fieldValue = field.getInt(null);
 
-            if (! messages.containsKey(fieldValue))
+            String message = messages.get(fieldValue);
+            if (message == null)
             {
               unregisteredMessageIDs.add(fieldName);
+System.err.println("Unregistered field:  " + fieldName);
+            }
+            else if (message.endsWith(".") && (! message.endsWith("...")))
+            {
+              idsEndingWithPeriods.add(fieldName);
+System.err.println("Message ending with a period:  " + fieldName + " -- " + message);
             }
           }
         }
       }
     }
 
+    StringBuilder buffer = new StringBuilder();
     if (! unregisteredMessageIDs.isEmpty())
     {
-      StringBuilder buffer = new StringBuilder();
-
       Iterator<String> iterator = unregisteredMessageIDs.iterator();
       buffer.append("Unregistered message IDs detected:  ");
       buffer.append(iterator.next());
@@ -137,9 +145,28 @@
         buffer.append(", ");
         buffer.append(iterator.next());
       }
-
-      assertTrue(unregisteredMessageIDs.isEmpty(), buffer.toString());
     }
+
+    if (! idsEndingWithPeriods.isEmpty())
+    {
+      if (buffer.length() > 0)
+      {
+        buffer.append(".  ");
+      }
+
+      Iterator<String> iterator = idsEndingWithPeriods.iterator();
+      buffer.append("Message IDs for messages ending with a period:  ");
+      buffer.append(iterator.next());
+
+      while (iterator.hasNext())
+      {
+        buffer.append(", ");
+        buffer.append(iterator.next());
+      }
+    }
+
+    assertTrue((unregisteredMessageIDs.isEmpty() &&
+               idsEndingWithPeriods.isEmpty()), buffer.toString());
   }
 }
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/internal/InternalClientConnectionTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/internal/InternalClientConnectionTestCase.java
index 4194343..b70acc7 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/internal/InternalClientConnectionTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/internal/InternalClientConnectionTestCase.java
@@ -47,7 +47,6 @@
 import org.opends.server.core.ExtendedOperation;
 import org.opends.server.core.ModifyOperation;
 import org.opends.server.core.ModifyDNOperation;
-import org.opends.server.core.Operation;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.ldap.LDAPAttribute;
 import org.opends.server.protocols.ldap.LDAPFilter;
@@ -62,6 +61,9 @@
 import org.opends.server.types.Entry;
 import org.opends.server.types.Modification;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.Operation;
+import org.opends.server.types.RawAttribute;
+import org.opends.server.types.RawModification;
 import org.opends.server.types.RDN;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchFilter;
@@ -341,7 +343,7 @@
 
     ASN1OctetString dn = new ASN1OctetString("cn=test,o=test");
 
-    ArrayList<LDAPAttribute> attrs = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attrs = new ArrayList<RawAttribute>();
 
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("top"));
@@ -648,7 +650,7 @@
     ArrayList<ASN1OctetString> values = new ArrayList<ASN1OctetString>();
     values.add(new ASN1OctetString("This is a test"));
 
-    ArrayList<LDAPModification> mods = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> mods = new ArrayList<RawModification>();
     mods.add(new LDAPModification(ModificationType.REPLACE,
                                   new LDAPAttribute("description", values)));
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestAbandonRequestProtocolOp.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestAbandonRequestProtocolOp.java
index 720a531..1ca5ea7 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestAbandonRequestProtocolOp.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestAbandonRequestProtocolOp.java
@@ -29,6 +29,7 @@
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1Long;
 import org.opends.server.protocols.ldap.AbandonRequestProtocolOp;
+import org.opends.server.types.LDAPException;
 import org.testng.annotations.Test;
 import static org.opends.server.protocols.ldap.LDAPConstants.OP_TYPE_ABANDON_REQUEST;
 import static org.testng.Assert.*;
@@ -36,37 +37,37 @@
 public class
 TestAbandonRequestProtocolOp extends LdapTestCase {
 
-	static int id=56;
+  static int id=56;
 
-	@Test ()
-	public void testAbandonRequestToString() throws Exception
-	{			
-		toString(new AbandonRequestProtocolOp(id));
-	}
+  @Test ()
+  public void testAbandonRequestToString() throws Exception
+  {
+    toString(new AbandonRequestProtocolOp(id));
+  }
 
-	@Test()
-	public void testAbandonRequestEncodeDecode() throws Exception {
-		AbandonRequestProtocolOp req = new AbandonRequestProtocolOp(id);
-		ASN1Element reqElem=req.encode();
-		ProtocolOp reqOp= ProtocolOp.decode(reqElem);
-		assertTrue(reqOp.getProtocolOpName() == req.getProtocolOpName());
-		assertTrue(reqOp.getType() == req.getType());
-	}
+  @Test()
+  public void testAbandonRequestEncodeDecode() throws Exception {
+    AbandonRequestProtocolOp req = new AbandonRequestProtocolOp(id);
+    ASN1Element reqElem=req.encode();
+    ProtocolOp reqOp= ProtocolOp.decode(reqElem);
+    assertTrue(reqOp.getProtocolOpName() == req.getProtocolOpName());
+    assertTrue(reqOp.getType() == req.getType());
+  }
 
-	@Test()
-	public void testSetters() throws Exception {
-		AbandonRequestProtocolOp req = new AbandonRequestProtocolOp(id);
-		req.encode();
-		req.setIDToAbandon(id+1);
-		ASN1Element reqElem=req.encode();
-		ProtocolOp reqDec= ProtocolOp.decode(reqElem);
-		AbandonRequestProtocolOp reqOp =
-			(AbandonRequestProtocolOp)reqDec;
-		assertTrue(reqOp.getIDToAbandon() == req.getIDToAbandon());
-	}
+  @Test()
+  public void testSetters() throws Exception {
+    AbandonRequestProtocolOp req = new AbandonRequestProtocolOp(id);
+    req.encode();
+    req.setIDToAbandon(id+1);
+    ASN1Element reqElem=req.encode();
+    ProtocolOp reqDec= ProtocolOp.decode(reqElem);
+    AbandonRequestProtocolOp reqOp =
+      (AbandonRequestProtocolOp)reqDec;
+    assertTrue(reqOp.getIDToAbandon() == req.getIDToAbandon());
+  }
 
-	@Test (expectedExceptions = LDAPException.class)
-	public void testAbandonRequestBadID() throws Exception {
-		ProtocolOp.decode(new ASN1Long(OP_TYPE_ABANDON_REQUEST, Long.MAX_VALUE));
-	}
+  @Test (expectedExceptions = LDAPException.class)
+  public void testAbandonRequestBadID() throws Exception {
+    ProtocolOp.decode(new ASN1Long(OP_TYPE_ABANDON_REQUEST, Long.MAX_VALUE));
+  }
 }
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestAddRequestProtocolOp.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestAddRequestProtocolOp.java
index 9c5ed4c..a24cc71 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestAddRequestProtocolOp.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestAddRequestProtocolOp.java
@@ -29,6 +29,8 @@
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1Sequence;
+import org.opends.server.types.LDAPException;
+import org.opends.server.types.RawAttribute;
 import static org.opends.server.util.ServerConstants.EOL;
 import org.opends.server.util.Base64;
 
@@ -85,11 +87,11 @@
    * @return              The generate attributes.
    *
    */
-  private ArrayList<LDAPAttribute> generateAttributes(int numAttributes,
+  private ArrayList<RawAttribute> generateAttributes(int numAttributes,
                                                       int numValues,
                                                       String prefix)
   {
-    ArrayList<LDAPAttribute> attributes = new ArrayList<LDAPAttribute>();
+    ArrayList<RawAttribute> attributes = new ArrayList<RawAttribute>();
     LDAPAttribute attribute;
     ASN1OctetString value;
     int i, j;
@@ -109,8 +111,8 @@
     return attributes;
   }
 
-  private Boolean attributesEquals(List<LDAPAttribute> attributes1,
-                                   List<LDAPAttribute> attributes2)
+  private Boolean attributesEquals(List<RawAttribute> attributes1,
+                                   List<RawAttribute> attributes2)
   {
     if(attributes1.size() != attributes2.size())
     {
@@ -118,8 +120,8 @@
     }
 
     int i, j;
-    LDAPAttribute attribute1;
-    LDAPAttribute attribute2;
+    RawAttribute attribute1;
+    RawAttribute attribute2;
     ArrayList<ASN1OctetString> values1;
     ArrayList<ASN1OctetString> values2;
 
@@ -182,7 +184,7 @@
   public void testConstructors() throws Exception
   {
     AddRequestProtocolOp addRequest;
-    ArrayList<LDAPAttribute> attributes;
+    ArrayList<RawAttribute> attributes;
 
     //Test to make sure the constructor with dn param works.
     addRequest = new AddRequestProtocolOp(dn);
@@ -306,7 +308,7 @@
     AddRequestProtocolOp addEncoded;
     AddRequestProtocolOp addDecoded;
     ASN1Element element;
-    ArrayList<LDAPAttribute> attributes;
+    ArrayList<RawAttribute> attributes;
 
 
     //Test case for a full encode decode operation with normal params.
@@ -349,7 +351,7 @@
   public void testToLDIF() throws Exception
   {
     AddRequestProtocolOp addRequest;
-    ArrayList<LDAPAttribute> attributes;
+    ArrayList<RawAttribute> attributes;
     StringBuilder buffer = new StringBuilder();
     BufferedReader reader;
     String line;
@@ -384,7 +386,7 @@
   public void testToLDIFBase64() throws Exception
   {
     AddRequestProtocolOp addRequest;
-    ArrayList<LDAPAttribute> attributes;
+    ArrayList<RawAttribute> attributes;
     StringBuilder buffer = new StringBuilder();
     BufferedReader reader;
     String line;
@@ -425,7 +427,7 @@
   public void TestToStringSingleLine() throws Exception
   {
     AddRequestProtocolOp addRequest;
-    ArrayList<LDAPAttribute> attributes;
+    ArrayList<RawAttribute> attributes;
     StringBuilder buffer = new StringBuilder();
     StringBuilder key = new StringBuilder();
     int i;
@@ -460,7 +462,7 @@
   public void TestToStringMultiLine() throws Exception
   {
     AddRequestProtocolOp addRequest;
-    ArrayList<LDAPAttribute> attributes;
+    ArrayList<RawAttribute> attributes;
     StringBuilder buffer = new StringBuilder();
     StringBuilder key = new StringBuilder();
     int i;
@@ -491,7 +493,7 @@
     key.append("  Attributes:");
     key.append(EOL);
 
-    for (LDAPAttribute attribute : attributes)
+    for (RawAttribute attribute : attributes)
     {
       attribute.toString(key, indent+4);
     }
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestAddResponseProtocolOp.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestAddResponseProtocolOp.java
index e39e475..57049d3 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestAddResponseProtocolOp.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestAddResponseProtocolOp.java
@@ -32,6 +32,7 @@
 import org.opends.server.types.RDN;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
+import org.opends.server.types.LDAPException;
 import org.opends.server.core.DirectoryServer;
 
 import java.util.ArrayList;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestBindRequestProtocolOp.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestBindRequestProtocolOp.java
index 604f3ca..e6cbc71 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestBindRequestProtocolOp.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestBindRequestProtocolOp.java
@@ -35,6 +35,7 @@
 import org.opends.server.protocols.asn1.ASN1Sequence;
 import org.opends.server.protocols.ldap.BindRequestProtocolOp;
 import org.opends.server.types.AuthenticationType;
+import org.opends.server.types.LDAPException;
 import org.testng.annotations.Test;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
 import static org.opends.server.util.ServerConstants.*;
@@ -42,147 +43,147 @@
 //import org.testng.Reporter;
 
 public class TestBindRequestProtocolOp extends LdapTestCase {
-	private static String dn="cn=some dn, dc=example, dc=com";
-	private static String pwd="password";
+  private static String dn="cn=some dn, dc=example, dc=com";
+  private static String pwd="password";
     private static String newPwd="newpassword";
     private static String newDn="cn=new dn, dc=example,dc=com";
     private static String creds="some creds";
 
-	@Test()
-	public void testBindRequestEncodeDecode() throws Exception {
-		ASN1OctetString bindDn=new ASN1OctetString(dn);
-		ASN1OctetString pw=new ASN1OctetString(pwd);
-		BindRequestProtocolOp simple =
-			new BindRequestProtocolOp(bindDn, 3, pw);
-		BindRequestProtocolOp sasl =
-			new BindRequestProtocolOp(bindDn, SASL_MECHANISM_PLAIN, pw);
-		ASN1Element simpleElement = simple.encode();
-		ASN1Element saslElement = sasl.encode();
-		// Decode to a new protocol op.
-		ProtocolOp simpleDecodedOp = ProtocolOp.decode(simpleElement);
-		ProtocolOp saslDecodedOp = ProtocolOp.decode(saslElement);
-		assertTrue(saslDecodedOp instanceof BindRequestProtocolOp);
-		assertTrue(simpleDecodedOp instanceof BindRequestProtocolOp);
-		BindRequestProtocolOp simpleOp =
-		         (BindRequestProtocolOp)simpleDecodedOp;
-		BindRequestProtocolOp saslOp =
-	         (BindRequestProtocolOp)saslDecodedOp;
-		assertTrue(saslOp.getDN().equals(sasl.getDN()));
-		assertTrue(simpleOp.getDN().equals(simple.getDN()));
-		
-		String simpleOpPwd=simpleOp.getSimplePassword().toString();
-		String simplePwd=simple.getSimplePassword().toString();
-		assertTrue(simpleOpPwd.equals(simplePwd));
-		
-		assertTrue(saslOp.getProtocolOpName() == sasl.getProtocolOpName());
-		assertTrue(simpleOp.getProtocolOpName() == simple.getProtocolOpName());
-		
-		assertTrue(simpleOp.getProtocolVersion() == simple.getProtocolVersion());
-		assertTrue(saslOp.getProtocolVersion() == sasl.getProtocolVersion());
-		
-		assertTrue(simpleOp.getType() == simple.getType());
-		assertTrue(saslOp.getType() == sasl.getType());
-		
-		assertTrue(saslOp.getAuthenticationType().getBERType() == 
-			sasl.getAuthenticationType().getBERType());
-		assertTrue(simpleOp.getAuthenticationType().getBERType() == 
-			simple.getAuthenticationType().getBERType());
-		
-		assertTrue(saslOp.getSASLMechanism().equals(sasl.getSASLMechanism()));
-		String saslOpCreds=saslOp.getSASLCredentials().toString();
-		String saslCreds=sasl.getSASLCredentials().toString();
-		assertTrue(saslOpCreds.equals(saslCreds));
-	}
-	
-	@Test ()
-	public void testBindRequestToString() throws Exception
-	{
-		ASN1OctetString bindDn=new ASN1OctetString(dn);
-		ASN1OctetString pw=new ASN1OctetString(pwd);
-		BindRequestProtocolOp sasl =
-			new BindRequestProtocolOp(bindDn, SASL_MECHANISM_PLAIN, pw);
-		StringBuilder sb = new StringBuilder();
-		sasl.toString(sb);
-		sasl.toString(sb, 1);
-	}
-	
-	 @Test (expectedExceptions = LDAPException.class)
-	  public void testBadBindRequestSequence() throws Exception
-	  {
-	    ProtocolOp.decode(new ASN1Integer(OP_TYPE_BIND_REQUEST, 0));
-	  }
-	 
-	 @Test (expectedExceptions = LDAPException.class)
-	 public void testInvalidBindRequestTooManyElements() throws Exception
-	 {
-	     ASN1OctetString bindDn=new ASN1OctetString(dn);
-	     ASN1OctetString pw=new ASN1OctetString(pwd);
-	     BindRequestProtocolOp sasl =
-	         new BindRequestProtocolOp(bindDn, SASL_MECHANISM_PLAIN, pw);
-	     tooManyElements(sasl, OP_TYPE_BIND_REQUEST);
-	 }
+  @Test()
+  public void testBindRequestEncodeDecode() throws Exception {
+    ASN1OctetString bindDn=new ASN1OctetString(dn);
+    ASN1OctetString pw=new ASN1OctetString(pwd);
+    BindRequestProtocolOp simple =
+      new BindRequestProtocolOp(bindDn, 3, pw);
+    BindRequestProtocolOp sasl =
+      new BindRequestProtocolOp(bindDn, SASL_MECHANISM_PLAIN, pw);
+    ASN1Element simpleElement = simple.encode();
+    ASN1Element saslElement = sasl.encode();
+    // Decode to a new protocol op.
+    ProtocolOp simpleDecodedOp = ProtocolOp.decode(simpleElement);
+    ProtocolOp saslDecodedOp = ProtocolOp.decode(saslElement);
+    assertTrue(saslDecodedOp instanceof BindRequestProtocolOp);
+    assertTrue(simpleDecodedOp instanceof BindRequestProtocolOp);
+    BindRequestProtocolOp simpleOp =
+             (BindRequestProtocolOp)simpleDecodedOp;
+    BindRequestProtocolOp saslOp =
+           (BindRequestProtocolOp)saslDecodedOp;
+    assertTrue(saslOp.getDN().equals(sasl.getDN()));
+    assertTrue(simpleOp.getDN().equals(simple.getDN()));
 
-	 @Test (expectedExceptions = LDAPException.class)
-	 public void testInvalidBindRequestTooFewElements() throws Exception
-	 {
-	     ASN1OctetString bindDn=new ASN1OctetString(dn);
-	     ASN1OctetString pw=new ASN1OctetString(pwd);
-	     BindRequestProtocolOp sasl =
-	         new BindRequestProtocolOp(bindDn, SASL_MECHANISM_PLAIN, pw);
-	     tooFewElements(sasl, OP_TYPE_BIND_REQUEST);
-	 }
+    String simpleOpPwd=simpleOp.getSimplePassword().toString();
+    String simplePwd=simple.getSimplePassword().toString();
+    assertTrue(simpleOpPwd.equals(simplePwd));
 
-	 @Test (expectedExceptions = LDAPException.class)
-	 public void testInvalidBindRequestProtoVersion() throws Exception
-	 {
-		 ASN1OctetString bindDn=new ASN1OctetString(dn);
-		 ASN1OctetString pw=new ASN1OctetString(pwd);
-		 BindRequestProtocolOp sasl =
-			 new BindRequestProtocolOp(bindDn, SASL_MECHANISM_PLAIN, pw);
-		 ASN1Element element = sasl.encode();
-		 ArrayList<ASN1Element> elements = ((ASN1Sequence)element).elements();
-		 elements.set(0, new ASN1Long(Long.MAX_VALUE));
-		 ProtocolOp.decode(new ASN1Sequence(OP_TYPE_BIND_REQUEST, elements));
-	 }
+    assertTrue(saslOp.getProtocolOpName() == sasl.getProtocolOpName());
+    assertTrue(simpleOp.getProtocolOpName() == simple.getProtocolOpName());
 
-	 @Test()
-	 public void testBindRequestSetters()  throws Exception {
-	     ASN1OctetString bindDn=new ASN1OctetString(dn);
-	     ASN1OctetString pw=new ASN1OctetString(pwd);
-	     ASN1OctetString newBindDn=new ASN1OctetString(newDn);
-	     ASN1OctetString newPw=new ASN1OctetString(newPwd);
+    assertTrue(simpleOp.getProtocolVersion() == simple.getProtocolVersion());
+    assertTrue(saslOp.getProtocolVersion() == sasl.getProtocolVersion());
+
+    assertTrue(simpleOp.getType() == simple.getType());
+    assertTrue(saslOp.getType() == sasl.getType());
+
+    assertTrue(saslOp.getAuthenticationType().getBERType() ==
+      sasl.getAuthenticationType().getBERType());
+    assertTrue(simpleOp.getAuthenticationType().getBERType() ==
+      simple.getAuthenticationType().getBERType());
+
+    assertTrue(saslOp.getSASLMechanism().equals(sasl.getSASLMechanism()));
+    String saslOpCreds=saslOp.getSASLCredentials().toString();
+    String saslCreds=sasl.getSASLCredentials().toString();
+    assertTrue(saslOpCreds.equals(saslCreds));
+  }
+
+  @Test ()
+  public void testBindRequestToString() throws Exception
+  {
+    ASN1OctetString bindDn=new ASN1OctetString(dn);
+    ASN1OctetString pw=new ASN1OctetString(pwd);
+    BindRequestProtocolOp sasl =
+      new BindRequestProtocolOp(bindDn, SASL_MECHANISM_PLAIN, pw);
+    StringBuilder sb = new StringBuilder();
+    sasl.toString(sb);
+    sasl.toString(sb, 1);
+  }
+
+   @Test (expectedExceptions = LDAPException.class)
+    public void testBadBindRequestSequence() throws Exception
+    {
+      ProtocolOp.decode(new ASN1Integer(OP_TYPE_BIND_REQUEST, 0));
+    }
+
+   @Test (expectedExceptions = LDAPException.class)
+   public void testInvalidBindRequestTooManyElements() throws Exception
+   {
+       ASN1OctetString bindDn=new ASN1OctetString(dn);
+       ASN1OctetString pw=new ASN1OctetString(pwd);
+       BindRequestProtocolOp sasl =
+           new BindRequestProtocolOp(bindDn, SASL_MECHANISM_PLAIN, pw);
+       tooManyElements(sasl, OP_TYPE_BIND_REQUEST);
+   }
+
+   @Test (expectedExceptions = LDAPException.class)
+   public void testInvalidBindRequestTooFewElements() throws Exception
+   {
+       ASN1OctetString bindDn=new ASN1OctetString(dn);
+       ASN1OctetString pw=new ASN1OctetString(pwd);
+       BindRequestProtocolOp sasl =
+           new BindRequestProtocolOp(bindDn, SASL_MECHANISM_PLAIN, pw);
+       tooFewElements(sasl, OP_TYPE_BIND_REQUEST);
+   }
+
+   @Test (expectedExceptions = LDAPException.class)
+   public void testInvalidBindRequestProtoVersion() throws Exception
+   {
+     ASN1OctetString bindDn=new ASN1OctetString(dn);
+     ASN1OctetString pw=new ASN1OctetString(pwd);
+     BindRequestProtocolOp sasl =
+       new BindRequestProtocolOp(bindDn, SASL_MECHANISM_PLAIN, pw);
+     ASN1Element element = sasl.encode();
+     ArrayList<ASN1Element> elements = ((ASN1Sequence)element).elements();
+     elements.set(0, new ASN1Long(Long.MAX_VALUE));
+     ProtocolOp.decode(new ASN1Sequence(OP_TYPE_BIND_REQUEST, elements));
+   }
+
+   @Test()
+   public void testBindRequestSetters()  throws Exception {
+       ASN1OctetString bindDn=new ASN1OctetString(dn);
+       ASN1OctetString pw=new ASN1OctetString(pwd);
+       ASN1OctetString newBindDn=new ASN1OctetString(newDn);
+       ASN1OctetString newPw=new ASN1OctetString(newPwd);
          ASN1OctetString saslCreds=new ASN1OctetString(creds);
-         
-	     BindRequestProtocolOp sasl =
-	         new BindRequestProtocolOp(bindDn, SASL_MECHANISM_PLAIN, pw);
-	     BindRequestProtocolOp simple =
-	         new BindRequestProtocolOp(bindDn, 3, pw);
-	     simple.encode();
-	     sasl.encode();
-	     sasl.setDN(newBindDn);
-	     simple.setDN(newBindDn);
-	     simple.setSimplePassword(newPw);
+
+       BindRequestProtocolOp sasl =
+           new BindRequestProtocolOp(bindDn, SASL_MECHANISM_PLAIN, pw);
+       BindRequestProtocolOp simple =
+           new BindRequestProtocolOp(bindDn, 3, pw);
+       simple.encode();
+       sasl.encode();
+       sasl.setDN(newBindDn);
+       simple.setDN(newBindDn);
+       simple.setSimplePassword(newPw);
          sasl.setProtocolVersion(2);
          simple.setProtocolVersion(2);
          sasl.setSASLAuthenticationInfo(SASL_MECHANISM_GSSAPI, saslCreds);
-         
-	     ASN1Element simpleElement = simple.encode();
-	     ASN1Element saslElement = sasl.encode();
-	     // Decode to a new protocol op.
-	     ProtocolOp simpleDecodedOp = ProtocolOp.decode(simpleElement);
-	     ProtocolOp saslDecodedOp = ProtocolOp.decode(saslElement);
-	     assertTrue(saslDecodedOp instanceof BindRequestProtocolOp);
-	     assertTrue(simpleDecodedOp instanceof BindRequestProtocolOp);
-	     BindRequestProtocolOp simpleOp =
-	         (BindRequestProtocolOp)simpleDecodedOp;
-	     BindRequestProtocolOp saslOp =
-	         (BindRequestProtocolOp)saslDecodedOp;
-         
-	     assertTrue(saslOp.getDN().equals(sasl.getDN()));
-	     assertTrue(simpleOp.getDN().equals(simple.getDN()));
-	     ASN1OctetString sPwd=simple.getSimplePassword();
+
+       ASN1Element simpleElement = simple.encode();
+       ASN1Element saslElement = sasl.encode();
+       // Decode to a new protocol op.
+       ProtocolOp simpleDecodedOp = ProtocolOp.decode(simpleElement);
+       ProtocolOp saslDecodedOp = ProtocolOp.decode(saslElement);
+       assertTrue(saslDecodedOp instanceof BindRequestProtocolOp);
+       assertTrue(simpleDecodedOp instanceof BindRequestProtocolOp);
+       BindRequestProtocolOp simpleOp =
+           (BindRequestProtocolOp)simpleDecodedOp;
+       BindRequestProtocolOp saslOp =
+           (BindRequestProtocolOp)saslDecodedOp;
+
+       assertTrue(saslOp.getDN().equals(sasl.getDN()));
+       assertTrue(simpleOp.getDN().equals(simple.getDN()));
+       ASN1OctetString sPwd=simple.getSimplePassword();
          int sProtoVer=simple.getProtocolVersion();
-	     assertTrue(simpleOp.getSimplePassword().equals(sPwd));
+       assertTrue(simpleOp.getSimplePassword().equals(sPwd));
          assertTrue(simpleOp.getProtocolVersion() == sProtoVer);
          assertTrue(saslOp.getProtocolVersion() == sasl.getProtocolVersion());
          String  saslTypeStr=sasl.getAuthenticationType().toString();
@@ -190,5 +191,5 @@
  //        Reporter.log(saslTypeStr);
  //        Reporter.log(saslOpTypeStr);
          assertTrue(saslOpTypeStr.equals(saslTypeStr));
-	 }
+   }
 }
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestBindResponseProtocolOp.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestBindResponseProtocolOp.java
index d8bb2f8..c26dc70 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestBindResponseProtocolOp.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestBindResponseProtocolOp.java
@@ -35,6 +35,7 @@
 import org.opends.server.protocols.ldap.BindResponseProtocolOp;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
 import org.opends.server.types.DN;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.ResultCode;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
@@ -46,17 +47,17 @@
     private static String message2 = "This is a second message";
     ResultCode        okCode          = ResultCode.SUCCESS;
     ResultCode  busyCode = ResultCode.BUSY;
-    ResultCode invalidSyntaxCode = ResultCode.INVALID_ATTRIBUTE_SYNTAX; 
+    ResultCode invalidSyntaxCode = ResultCode.INVALID_ATTRIBUTE_SYNTAX;
     private static String dn = "cn=dn, dc=example,dc=com";
     private static String dn2 = "cn=dn2, dc=example,dc=com";
     private static String saslCreds = "sasl credentials";
     private static String saslCreds2 = "sasl2 credentials";
     private static String url = "ldap://somewhere.example.com";
     private static String url2 = "ldap://somewhere2.example.com";
-    
+
     /**
      * Once-only initialization.
-     * 
+     *
      * @throws Exception
      *           If an unexpected error occurred.
      */
@@ -66,8 +67,8 @@
       // start the server.
       TestCaseUtils.startServer();
     }
-    
-    
+
+
     @Test ()
     public void testBindRequestToString() throws Exception
     {
@@ -76,30 +77,30 @@
         DN responseDn = DN.decode(dn);
         ASN1OctetString serverSASLCredentials =
             new ASN1OctetString(saslCreds);
-        BindResponseProtocolOp r = 
+        BindResponseProtocolOp r =
             new BindResponseProtocolOp(okCode.getIntValue(),
-                    message, responseDn, referralURLs, 
+                    message, responseDn, referralURLs,
                     serverSASLCredentials);
         toString(r);
     }
 
     @Test (expectedExceptions = LDAPException.class)
     public void testBindResponseTooFew() throws Exception {
-        BindResponseProtocolOp busyResp = 
+        BindResponseProtocolOp busyResp =
             new BindResponseProtocolOp(busyCode.getIntValue());
         tooFewElements(busyResp, OP_TYPE_BIND_RESPONSE);
     }
 
     @Test (expectedExceptions = LDAPException.class)
     public void testBindResponseTooMany() throws Exception {
-        BindResponseProtocolOp busyResp = 
+        BindResponseProtocolOp busyResp =
             new BindResponseProtocolOp(busyCode.getIntValue());
         tooManyElements(busyResp, OP_TYPE_BIND_RESPONSE);
     }
 
     @Test (expectedExceptions = LDAPException.class)
     public void testBindResponseBadResult() throws Exception {
-        BindResponseProtocolOp busyResp = 
+        BindResponseProtocolOp busyResp =
             new BindResponseProtocolOp(busyCode.getIntValue());
         badIntegerElement(busyResp, OP_TYPE_BIND_RESPONSE,0);
     }
@@ -111,13 +112,13 @@
         DN responseDn = DN.decode(dn);
         ASN1OctetString serverSASLCredentials =
             new ASN1OctetString(saslCreds);
-        BindResponseProtocolOp r = 
+        BindResponseProtocolOp r =
             new BindResponseProtocolOp(okCode.getIntValue(),
-                    message, responseDn, referralURLs, 
+                    message, responseDn, referralURLs,
                     serverSASLCredentials);
         badIntegerElement(r,OP_TYPE_BIND_RESPONSE,3);
     }
-    
+
     @Test
     public void testBindResponseEncodeDecode() throws Exception {
         List<String> referralURLs=new ArrayList<String>();
@@ -125,59 +126,59 @@
         DN responseDn = DN.decode(dn);
         ASN1OctetString serverSASLCredentials =
             new ASN1OctetString(saslCreds);
-        
-        BindResponseProtocolOp saslOkResp = 
+
+        BindResponseProtocolOp saslOkResp =
             new BindResponseProtocolOp(okCode.getIntValue(),
-                    message, responseDn, referralURLs, 
+                    message, responseDn, referralURLs,
                     serverSASLCredentials);
-        BindResponseProtocolOp busyResp = 
+        BindResponseProtocolOp busyResp =
             new BindResponseProtocolOp(busyCode.getIntValue());
-        BindResponseProtocolOp invalidSyntaxResp = 
+        BindResponseProtocolOp invalidSyntaxResp =
             new BindResponseProtocolOp(invalidSyntaxCode.getIntValue(),
                                                               message);
         ASN1Element saslOkElem=saslOkResp.encode();
         ASN1Element busyElem=busyResp.encode();
         ASN1Element invalidSyntaxElem=invalidSyntaxResp.encode();
-        
+
         ProtocolOp saslOkDec= ProtocolOp.decode(saslOkElem);
         ProtocolOp busyDec = ProtocolOp.decode(busyElem);
         ProtocolOp invalidSyntaxDec = ProtocolOp.decode(invalidSyntaxElem);
-        
+
         assertTrue(saslOkDec instanceof BindResponseProtocolOp);
         assertTrue(busyDec instanceof BindResponseProtocolOp);
         assertTrue(invalidSyntaxDec instanceof BindResponseProtocolOp);
-        
+
         BindResponseProtocolOp saslOkOp =
              (BindResponseProtocolOp)saslOkDec;
         BindResponseProtocolOp busyOp =
              (BindResponseProtocolOp)busyDec;
         BindResponseProtocolOp invalidSyntaxOp =
              (BindResponseProtocolOp)invalidSyntaxDec;
-        
+
         assertTrue(saslOkOp.getProtocolOpName() == saslOkResp.getProtocolOpName());
         assertTrue(busyOp.getProtocolOpName() == busyResp.getProtocolOpName());
         assertTrue(invalidSyntaxOp.getProtocolOpName() == invalidSyntaxResp.getProtocolOpName());
-        
+
         assertTrue(saslOkOp.getType() == saslOkResp.getType());
         assertTrue(busyOp.getType() == busyResp.getType());
         assertTrue(invalidSyntaxOp.getType() == invalidSyntaxResp.getType());
-        
+
         assertTrue(saslOkOp.getResultCode() == saslOkResp.getResultCode());
         assertTrue(busyOp.getResultCode() == busyResp.getResultCode());
         assertTrue(invalidSyntaxOp.getResultCode() == invalidSyntaxResp.getResultCode());
-        
+
         assertTrue(saslOkOp.getErrorMessage().equals(saslOkResp.getErrorMessage()));
         assertTrue(invalidSyntaxOp.getErrorMessage().equals(invalidSyntaxResp.getErrorMessage()));
-        
+
         String str1=saslOkOp.getServerSASLCredentials().toString();
         String str2=saslOkResp.getServerSASLCredentials().toString();
-        assertTrue(str1.equals(str2));     
+        assertTrue(str1.equals(str2));
         List<String> list1 = saslOkOp.getReferralURLs();
         List<String> list2 = saslOkResp.getReferralURLs();
         assertTrue(list1.equals(list2));
         DN dn1=saslOkOp.getMatchedDN();
         DN dn2=saslOkResp.getMatchedDN();
-        assertTrue(dn1.equals(dn2));    
+        assertTrue(dn1.equals(dn2));
     }
     @Test()
     public void testSetters() throws Exception {
@@ -187,7 +188,7 @@
         referralURL2s.add(url2);
         DN responseDn = DN.decode(dn);
         DN responseDn2 = DN.decode(dn2);
-        BindResponseProtocolOp resp = 
+        BindResponseProtocolOp resp =
             new BindResponseProtocolOp(okCode.getIntValue(),
                     message, responseDn, referralURLs);
         resp.encode();
@@ -211,9 +212,9 @@
             new ASN1OctetString(saslCreds);
         ASN1OctetString creds2 =
             new ASN1OctetString(saslCreds2);
-        BindResponseProtocolOp sasl = 
+        BindResponseProtocolOp sasl =
             new BindResponseProtocolOp(okCode.getIntValue(),
-                    message, responseDn, referralURLs, 
+                    message, responseDn, referralURLs,
                     creds);
         sasl.encode();
         sasl.setServerSASLCredentials(creds2);
@@ -223,6 +224,6 @@
             (BindResponseProtocolOp)saslDec;
         String str1=sasl.getServerSASLCredentials().toString();
         String str2=saslOp.getServerSASLCredentials().toString();
-        assertTrue(str1.equals(str2));     
+        assertTrue(str1.equals(str2));
     }
 }
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestCompareRequestProtocolOp.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestCompareRequestProtocolOp.java
index f8d8093..8d66085 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestCompareRequestProtocolOp.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestCompareRequestProtocolOp.java
@@ -30,6 +30,7 @@
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1Sequence;
 import org.opends.server.protocols.asn1.ASN1Null;
+import org.opends.server.types.LDAPException;
 import static org.opends.server.util.ServerConstants.EOL;
 import org.testng.annotations.Test;
 import static org.testng.Assert.assertEquals;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestCompareResponseProtocolOp.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestCompareResponseProtocolOp.java
index 009d484..acbcacb 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestCompareResponseProtocolOp.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestCompareResponseProtocolOp.java
@@ -32,6 +32,7 @@
 import org.opends.server.types.RDN;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.*;
+import org.opends.server.types.LDAPException;
 import static org.opends.server.util.ServerConstants.EOL;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestDeleteRequestProtocolOp.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestDeleteRequestProtocolOp.java
index 4765324..417b021 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestDeleteRequestProtocolOp.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestDeleteRequestProtocolOp.java
@@ -31,6 +31,7 @@
 import org.testng.annotations.*;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.asn1.ASN1Element;
+import org.opends.server.types.LDAPException;
 import static org.opends.server.util.ServerConstants.EOL;
 
 /**
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestDeleteResponseProtocolOp.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestDeleteResponseProtocolOp.java
index ec9579f..c64a0e4 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestDeleteResponseProtocolOp.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestDeleteResponseProtocolOp.java
@@ -34,6 +34,7 @@
 import org.opends.server.types.DN;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.RDN;
 import org.opends.server.core.DirectoryServer;
 import static org.opends.server.util.ServerConstants.EOL;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestLDAPException.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestLDAPException.java
index 463030b..1d4a3c8 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestLDAPException.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestLDAPException.java
@@ -32,27 +32,28 @@
 import static org.opends.server.messages.ProtocolMessages.MSGID_ECN_INVALID_ELEMENT_TYPE;
 import static org.opends.server.messages.ProtocolMessages.MSGID_ECN_CANNOT_DECODE_VALUE;
 import static org.testng.Assert.*;
+import org.opends.server.types.LDAPException;
 
 public class TestLDAPException extends LdapTestCase {
 
-	@Test()
-	public void testLDAPException() {
-		int    msgID   = MSGID_ECN_INVALID_ELEMENT_TYPE;
-		String message = getMessage(msgID);
-		LDAPException ex=new LDAPException(LDAPResultCode.PROTOCOL_ERROR, msgID, message);
-		assertTrue(ex.getResultCode() == LDAPResultCode.PROTOCOL_ERROR);
-		assertTrue(ex.getMessageID() == msgID); 
-	}
+  @Test()
+  public void testLDAPException() {
+    int    msgID   = MSGID_ECN_INVALID_ELEMENT_TYPE;
+    String message = getMessage(msgID);
+    LDAPException ex=new LDAPException(LDAPResultCode.PROTOCOL_ERROR, msgID, message);
+    assertTrue(ex.getResultCode() == LDAPResultCode.PROTOCOL_ERROR);
+    assertTrue(ex.getMessageID() == msgID);
+  }
 
-	@Test()
-	public void testLDAPExceptionThrowable() {
-		int    msgID   = MSGID_ECN_INVALID_ELEMENT_TYPE;
-		String message = getMessage(msgID);
-		LDAPException ex=new LDAPException(LDAPResultCode.OTHER, msgID, message);
-		int    msgID1   = MSGID_ECN_CANNOT_DECODE_VALUE;
-		String message1 = getMessage(msgID);
-		new LDAPException(LDAPResultCode.PROTOCOL_ERROR, msgID1, message1,ex);
-		assertTrue(ex.getResultCode() == LDAPResultCode.OTHER);
-		assertTrue(ex.getMessageID() == msgID); 
-	}
+  @Test()
+  public void testLDAPExceptionThrowable() {
+    int    msgID   = MSGID_ECN_INVALID_ELEMENT_TYPE;
+    String message = getMessage(msgID);
+    LDAPException ex=new LDAPException(LDAPResultCode.OTHER, msgID, message);
+    int    msgID1   = MSGID_ECN_CANNOT_DECODE_VALUE;
+    String message1 = getMessage(msgID);
+    new LDAPException(LDAPResultCode.PROTOCOL_ERROR, msgID1, message1,ex);
+    assertTrue(ex.getResultCode() == LDAPResultCode.OTHER);
+    assertTrue(ex.getMessageID() == msgID);
+  }
 }
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestLDAPFilter.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestLDAPFilter.java
index 08d07eb..427a9bb 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestLDAPFilter.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestLDAPFilter.java
@@ -29,14 +29,18 @@
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 import org.testng.annotations.BeforeTest;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertSame;
-import org.opends.server.types.SearchFilter;
-import org.opends.server.types.FilterType;
 import org.opends.server.types.AttributeType;
+import org.opends.server.types.ByteString;
+import org.opends.server.types.FilterType;
+import org.opends.server.types.LDAPException;
+import org.opends.server.types.RawFilter;
+import org.opends.server.types.SearchFilter;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.TestCaseUtils;
 
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertSame;
+
 import java.util.ArrayList;
 
 public class TestLDAPFilter extends LdapTestCase
@@ -82,8 +86,8 @@
                                         new ASN1OctetString("\\test*(Value)"));
     LDAPFilter presense = LDAPFilter.createPresenceFilter("login");
 
-    ArrayList<ASN1OctetString> any = new ArrayList<ASN1OctetString>(0);
-    ArrayList<ASN1OctetString> multiAny = new ArrayList<ASN1OctetString>(1);
+    ArrayList<ByteString> any = new ArrayList<ByteString>(0);
+    ArrayList<ByteString> multiAny = new ArrayList<ByteString>(1);
     multiAny.add(new ASN1OctetString("\\wid*(get)"));
     multiAny.add(new ASN1OctetString("*"));
 
@@ -132,13 +136,13 @@
                                            new ASN1OctetString(""),
                                                 true);
 
-    ArrayList<LDAPFilter> list1 = new ArrayList<LDAPFilter>();
+    ArrayList<RawFilter> list1 = new ArrayList<RawFilter>();
     list1.add(equal);
     list1.add(approx);
 
     LDAPFilter and = LDAPFilter.createANDFilter(list1);
 
-    ArrayList<LDAPFilter> list2 = new ArrayList<LDAPFilter>();
+    ArrayList<RawFilter> list2 = new ArrayList<RawFilter>();
     list2.add(substring1);
     list2.add(extensible1);
     list2.add(and);
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyDNRequestProtocolOp.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyDNRequestProtocolOp.java
index 2f6e5b8..2cd8ae8 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyDNRequestProtocolOp.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyDNRequestProtocolOp.java
@@ -27,6 +27,7 @@
 package org.opends.server.protocols.ldap;
 
 import org.opends.server.protocols.asn1.*;
+import org.opends.server.types.LDAPException;
 import static org.opends.server.util.ServerConstants.EOL;
 import org.testng.annotations.Test;
 import static org.testng.Assert.*;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyDNResponseProtocolOp.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyDNResponseProtocolOp.java
index f00bab1..9669f39 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyDNResponseProtocolOp.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyDNResponseProtocolOp.java
@@ -29,6 +29,7 @@
 import org.opends.server.types.DN;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.RDN;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.*;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyRequestProtocolOp.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyRequestProtocolOp.java
index 4e6bcca..028998e 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyRequestProtocolOp.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyRequestProtocolOp.java
@@ -30,7 +30,9 @@
 import org.opends.server.protocols.asn1.ASN1Element;
 import org.opends.server.protocols.asn1.ASN1Sequence;
 import static org.opends.server.util.ServerConstants.EOL;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.RawModification;
 import org.testng.annotations.Test;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
@@ -81,10 +83,10 @@
    * @return              The generate attributes.
    *
    */
-  private ArrayList<LDAPModification> generateModifications(int numAttributes,
-                                                            String prefix)
+  private ArrayList<RawModification> generateModifications(int numAttributes,
+                                                           String prefix)
   {
-    ArrayList<LDAPModification> modifies = new ArrayList<LDAPModification>();
+    ArrayList<RawModification> modifies = new ArrayList<RawModification>();
     LDAPAttribute attribute;
     ModificationType modificationType;
     Random randomGenerator = new Random(0);
@@ -112,8 +114,8 @@
     return modifies;
   }
 
-  private Boolean modificationsEquals(ArrayList<LDAPModification> modifies1,
-                                      ArrayList<LDAPModification> modifies2)
+  private Boolean modificationsEquals(ArrayList<RawModification> modifies1,
+                                      ArrayList<RawModification> modifies2)
   {
     if(modifies1.size() != modifies2.size())
     {
@@ -121,8 +123,8 @@
     }
 
     int i, j;
-    LDAPModification modify1;
-    LDAPModification modify2;
+    RawModification modify1;
+    RawModification modify2;
 
     for(i = 0; i < modifies1.size(); i++)
     {
@@ -179,7 +181,7 @@
   public void testConstructors() throws Exception
   {
     ModifyRequestProtocolOp modifyRequest;
-    ArrayList<LDAPModification> modifications;
+    ArrayList<RawModification> modifications;
 
     //Test to make sure the constructor with dn param works.
     modifyRequest = new ModifyRequestProtocolOp(dn);
@@ -305,7 +307,7 @@
     ModifyRequestProtocolOp modifyEncoded;
     ModifyRequestProtocolOp modifyDecoded;
     ASN1Element element;
-    ArrayList<LDAPModification> modifies;
+    ArrayList<RawModification> modifies;
 
 
     //Test case for a full encode decode operation with normal params.
@@ -351,7 +353,7 @@
   public void TestToStringSingleLine() throws Exception
   {
     ModifyRequestProtocolOp modifyRequest;
-    ArrayList<LDAPModification> modifications;
+    ArrayList<RawModification> modifications;
     StringBuilder buffer = new StringBuilder();
     StringBuilder key = new StringBuilder();
     int i;
@@ -385,7 +387,7 @@
   public void TestToStringMultiLine() throws Exception
   {
     ModifyRequestProtocolOp modifyRequest;
-    ArrayList<LDAPModification> modifications;
+    ArrayList<RawModification> modifications;
     StringBuilder buffer = new StringBuilder();
     StringBuilder key = new StringBuilder();
     int i;
@@ -415,7 +417,7 @@
     key.append("  Modifications:");
     key.append(EOL);
 
-    for (LDAPModification modify : modifications)
+    for (RawModification modify : modifications)
     {
       modify.toString(key, indent+4);
     }
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyResponseProtocolOp.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyResponseProtocolOp.java
index 1907a85..1b28174 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyResponseProtocolOp.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestModifyResponseProtocolOp.java
@@ -29,6 +29,7 @@
 import org.opends.server.types.DN;
 import org.opends.server.types.AttributeType;
 import org.opends.server.types.AttributeValue;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.RDN;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.protocols.asn1.*;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestSearchProtocolOp.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestSearchProtocolOp.java
index 3ff79e1..b08a72d 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestSearchProtocolOp.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestSearchProtocolOp.java
@@ -30,6 +30,7 @@
 
 import org.testng.annotations.Test;
 import org.opends.server.types.DereferencePolicy;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.SearchScope;
 import org.opends.server.protocols.asn1.*;
 import static org.opends.server.protocols.ldap.LDAPConstants.*;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestSearchResultEntryProtocolOp.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestSearchResultEntryProtocolOp.java
index 4047708..9753450 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestSearchResultEntryProtocolOp.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/protocols/ldap/TestSearchResultEntryProtocolOp.java
@@ -29,6 +29,7 @@
 package org.opends.server.protocols.ldap;
 
 import org.opends.server.types.Entry;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.SearchResultEntry;
 import org.opends.server.TestCaseUtils;
 import org.opends.server.protocols.asn1.*;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/InitOnLineTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/InitOnLineTest.java
index 521afec..2884a04 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/InitOnLineTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/InitOnLineTest.java
@@ -49,7 +49,6 @@
 import org.opends.server.schema.DirectoryStringSyntax;
 import org.opends.server.synchronization.changelog.Changelog;
 import org.opends.server.synchronization.changelog.ChangelogFakeConfiguration;
-import org.opends.server.synchronization.common.LogMessages;
 import org.opends.server.synchronization.plugin.ChangelogBroker;
 import org.opends.server.synchronization.plugin.SynchronizationDomain;
 import org.opends.server.synchronization.protocol.DoneMessage;
@@ -70,26 +69,27 @@
 import org.opends.server.types.SearchScope;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
+import static org.opends.server.messages.SynchronizationMessages.*;
 import static org.opends.server.util.StaticUtils.stackTraceToSingleLineString;
 
 /**
  * Tests contained here:
- * 
+ *
  * Initialize Test Cases <=> Pull entries
  * ---------------------
  * InitializeImport : Tests the import in the target DS.
- * Creates a task on current DS and makes a broker simulates DS2 sending entries. 
+ * Creates a task on current DS and makes a broker simulates DS2 sending entries.
  * InitializeExport : Tests the export from the source DS
- * A broker simulates DS2 pulling entries from current DS. 
- * 
+ * A broker simulates DS2 pulling entries from current DS.
+ *
  * Initialize Target Test Cases <=> Push entries
  * ----------------------------
  * InitializeTargetExport : Tests the export from the source DS
  * Creates a task on current DS and makes broker simulates DS2 receiving entries
  * InitializeTargetImport : Test the import in the target DS
- * A broker simulates DS2 receiving entries from current DS. 
- * 
- * InitializeTargetConfigErrors : Tests configuration errors of the 
+ * A broker simulates DS2 receiving entries from current DS.
+ *
+ * InitializeTargetConfigErrors : Tests configuration errors of the
  * InitializeTarget task
  */
 
@@ -108,7 +108,7 @@
   protected Entry taskInitFromS2;
   protected Entry taskInitTargetS2;
   protected Entry taskInitTargetAll;
-  
+
   SocketSession ssSession = null;
   boolean ssShutdownRequested = false;
   protected String[] updatedEntries;
@@ -119,7 +119,7 @@
   short changelog1ID = 12;
   short changelog2ID = 13;
   int changelogPort = 8989;
-  
+
   private DN baseDn;
   ChangelogBroker server2 = null;
   Changelog changelog1 = null;
@@ -139,9 +139,9 @@
   }
   protected void log(String message, Exception e)
   {
-    log(message + stackTraceToSingleLineString(e));  
+    log(message + stackTraceToSingleLineString(e));
   }
-  
+
   /**
    * Set up the environment for performing the tests in this Class.
    * synchronization
@@ -153,7 +153,7 @@
   public void setUp() throws Exception
   {
     log("Setup: debugEnabled:" + debugEnabled());
-    
+
     // This test suite depends on having the schema available.
     TestCaseUtils.startServer();
 
@@ -166,7 +166,7 @@
     updatedEntries = newLDIFEntries();
 
     // Create an internal connection in order to provide operations
-    // to DS to populate the db - 
+    // to DS to populate the db -
     connection = InternalClientConnection.getRootConnection();
 
     // Synchro provider
@@ -179,7 +179,7 @@
     // Synchro suffix
     synchroServerEntry = null;
 
-    // Add config entries to the current DS server based on : 
+    // Add config entries to the current DS server based on :
     // Add the synchronization plugin: synchroPluginEntry & synchroPluginStringDN
     // Add synchroServerEntry
     // Add changeLogEntry
@@ -231,17 +231,17 @@
 
   // Tests that entries have been written in the db
   private void testEntriesInDb()
-  { 
+  {
     log("TestEntriesInDb");
     short found = 0;
-    
+
     for (String entry : updatedEntries)
-    { 
+    {
 
       int dns = entry.indexOf("dn: ");
       int dne = entry.indexOf("dc=com");
-      String dn = entry.substring(dns+4,dne+6);   
-      
+      String dn = entry.substring(dns+4,dne+6);
+
       log("Search Entry: " + dn);
 
       DN entryDN = null;
@@ -273,18 +273,18 @@
       }
     }
 
-    assertEquals(found, updatedEntries.length, 
+    assertEquals(found, updatedEntries.length,
         " Entries present in DB :" + found +
         " Expected entries :" + updatedEntries.length);
   }
-  
-  private void addTask(Entry taskEntry, ResultCode expectedResult, 
+
+  private void addTask(Entry taskEntry, ResultCode expectedResult,
       int errorMessageID)
   {
     try
     {
       log("AddTask/" + taskEntry);
-      
+
       // Change config of DS to launch the total update task
       InternalClientConnection connection =
         InternalClientConnection.getRootConnection();
@@ -296,7 +296,7 @@
             taskEntry.getObjectClasses(),
             taskEntry.getUserAttributes(),
             taskEntry.getOperationalAttributes());
-      
+
       assertEquals(addOperation.getResultCode(), expectedResult,
           "Result of ADD operation of the task is: "
           + addOperation.getResultCode()
@@ -319,7 +319,7 @@
       {
         waitTaskState(taskEntry, TaskState.RUNNING, -1);
       }
-            
+
       // Entry will be removed at the end of the test
       entryList.addLast(taskEntry.getDN());
 
@@ -339,13 +339,13 @@
    * @param expectedLeft The expected number of entries still to be processed.
    * @param expectedDone The expected numner of entries to be processed.
    */
-  private void waitTaskCompleted(Entry taskEntry, TaskState expectedState, 
+  private void waitTaskCompleted(Entry taskEntry, TaskState expectedState,
       long expectedLeft, long expectedDone)
   {
     try
     {
       // FIXME - Factorize with TasksTestCase
-      // Wait until the task completes.      
+      // Wait until the task completes.
       int timeout = 2000;
 
       AttributeType completionTimeType = DirectoryServer.getAttributeType(
@@ -420,8 +420,8 @@
         stateString =
           resultEntry.getAttributeValue(taskStateType,
               DirectoryStringSyntax.DECODER);
-        
-        assertEquals(Long.decode(stateString).longValue(),expectedLeft, 
+
+        assertEquals(Long.decode(stateString).longValue(),expectedLeft,
             "The number of entries to process is not correct.");
 
         // Check that the task state is as expected.
@@ -430,10 +430,10 @@
         stateString =
           resultEntry.getAttributeValue(taskStateType,
               DirectoryStringSyntax.DECODER);
-        
-        assertEquals(Long.decode(stateString).longValue(),expectedDone, 
+
+        assertEquals(Long.decode(stateString).longValue(),expectedDone,
             "The number of entries processed is not correct.");
-        
+
       }
       catch(Exception e)
       {
@@ -446,10 +446,10 @@
       fail("Exception"+ e.getMessage()+e.getStackTrace());
     }
   }
-  
+
   private void waitTaskState(Entry taskEntry, TaskState expectedTaskState,
       int expectedMessage)
-  {    
+  {
     TaskState taskState = null;
     try
     {
@@ -487,7 +487,7 @@
         {
           fail("Exception"+ e.getMessage()+e.getStackTrace());
         }
-        
+
         try
         {
           // Check that the left counter.
@@ -496,7 +496,7 @@
           String leftString =
             resultEntry.getAttributeValue(taskStateType,
                 DirectoryStringSyntax.DECODER);
-          
+
           // Check that the total counter.
           taskStateType =
            DirectoryServer.getAttributeType(ATTR_TASK_INITIALIZE_DONE, true);
@@ -508,9 +508,9 @@
         {
           fail("Exception"+ e.getMessage()+e.getStackTrace());
         }
-        
+
         Thread.sleep(2000);
-      } 
+      }
       while ((taskState != expectedTaskState) &&
           (taskState != TaskState.STOPPED_BY_ERROR));
 
@@ -521,8 +521,8 @@
       resultEntry.getAttributeValues(logMessagesType,
           DirectoryStringSyntax.DECODER,
           logMessages);
-      
-      if ((taskState != TaskState.COMPLETED_SUCCESSFULLY) 
+
+      if ((taskState != TaskState.COMPLETED_SUCCESSFULLY)
           && (taskState != TaskState.RUNNING))
       {
         if (logMessages.size() == 0)
@@ -541,7 +541,7 @@
         }
       }
 
-      assertEquals(taskState, expectedTaskState, "Task State:" + taskState + 
+      assertEquals(taskState, expectedTaskState, "Task State:" + taskState +
           " Expected task state:" + expectedTaskState);
     }
     catch(Exception e)
@@ -556,7 +556,7 @@
   private void addTestEntriesToDB()
   {
     try
-    {      
+    {
       for (String ldifEntry : updatedEntries)
       {
         Entry entry = TestCaseUtils.entryFromLdifString(ldifEntry);
@@ -570,7 +570,7 @@
         {
           log("addEntry: Failed" + addOp.getResultCode());
         }
-        
+
         // They will be removed at the end of the test
         entryList.addLast(entry.getDN());
       }
@@ -588,12 +588,12 @@
   {
     String[] entries =
     {
-        "dn: dc=example,dc=com\n" 
+        "dn: dc=example,dc=com\n"
         + "objectClass: top\n"
         + "objectClass: domain\n"
         + "entryUUID: 21111111-1111-1111-1111-111111111111\n"
-        + "\n",     
-          "dn: ou=People,dc=example,dc=com\n" 
+        + "\n",
+          "dn: ou=People,dc=example,dc=com\n"
         + "objectClass: top\n"
         + "objectClass: organizationalUnit\n"
         + "entryUUID: 21111111-1111-1111-1111-111111111112\n"
@@ -620,9 +620,9 @@
         + "\n"
         };
 
-    return entries;    
+    return entries;
   }
-  
+
   /**
    * Broker will send the entries to a server.
    * @param broker The broker that will send the entries.
@@ -630,7 +630,7 @@
    * @param destinationServerID The target server.
    * @param requestorID The initiator server.
    */
-  private void makeBrokerPublishEntries(ChangelogBroker broker, 
+  private void makeBrokerPublishEntries(ChangelogBroker broker,
       short senderID, short destinationServerID, short requestorID)
   {
     // Send entries
@@ -644,24 +644,24 @@
       {
         log("Broker will pusblish 1 entry: bytes:"+ entry.length());
 
-        EntryMessage entryMsg = new EntryMessage(senderID, destinationServerID, 
+        EntryMessage entryMsg = new EntryMessage(senderID, destinationServerID,
             entry.getBytes());
         broker.publish(entryMsg);
       }
 
       DoneMessage doneMsg = new DoneMessage(senderID, destinationServerID);
       broker.publish(doneMsg);
-      
+
       log("Broker " + senderID + " published entries");
 
     }
     catch(Exception e)
     {
-      fail("makeBrokerPublishEntries Exception:"+ e.getMessage() + " " 
+      fail("makeBrokerPublishEntries Exception:"+ e.getMessage() + " "
           + stackTraceToSingleLineString(e));
     }
   }
-  
+
   void receiveUpdatedEntries(ChangelogBroker broker, short serverID,
       String[] updatedEntries)
   {
@@ -697,7 +697,7 @@
         else if (msg instanceof ErrorMessage)
         {
           ErrorMessage em = (ErrorMessage)msg;
-          log("Broker " + serverID + "  receives ERROR " 
+          log("Broker " + serverID + "  receives ERROR "
               + getMessage(em.getMsgID())
               + " " + em.getDetails());
           break;
@@ -709,11 +709,11 @@
       }
       catch(Exception e)
       {
-        log("receiveUpdatedEntries" + stackTraceToSingleLineString(e));        
+        log("receiveUpdatedEntries" + stackTraceToSingleLineString(e));
       }
     }
 
-    assertTrue(entriesReceived == updatedEntries.length, 
+    assertTrue(entriesReceived == updatedEntries.length,
         " Received entries("+entriesReceived +
         ") == Expected entries("+updatedEntries.length+")");
   }
@@ -729,16 +729,16 @@
     {
       if ((changelogId==changelog1ID)&&(changelog1!=null))
         return changelog1;
-      
+
       if ((changelogId==changelog2ID)&&(changelog2!=null))
         return changelog2;
-      
+
       {
         int chPort = getChangelogPort(changelogId);
-        
+
         ChangelogFakeConfiguration conf =
           new ChangelogFakeConfiguration(chPort, null, 0, changelogId, 0, 100,
-                                         null); 
+                                         null);
         Changelog changelog = new Changelog(conf);
         Thread.sleep(1000);
 
@@ -751,7 +751,7 @@
     }
     return null;
   }
-  
+
   /**
    * Create a synchronized suffix in the current server providing the
    * changelog serverID.
@@ -776,7 +776,7 @@
       + "ds-cfg-receive-status: true\n"
 //    + "ds-cfg-heartbeat-interval: 0 ms\n"
       + "ds-cfg-window-size: " + WINDOW_SIZE;
-      
+
       if (synchroServerEntry == null)
       {
         synchroServerEntry = TestCaseUtils.entryFromLdifString(synchroServerLdif);
@@ -788,7 +788,7 @@
         sd = SynchronizationDomain.retrievesSynchronizationDomain(baseDn);
 
         // Clear the backend
-        SynchronizationDomain.clearJEBackend(false, 
+        SynchronizationDomain.clearJEBackend(false,
             sd.getBackend().getBackendID(),
             baseDn.toNormalizedString());
 
@@ -809,7 +809,7 @@
   {
     return (changelogPort+changelogID);
   }
-  
+
   /**
    * Tests the import side of the Initialize task
    */
@@ -832,11 +832,11 @@
           server2ID, 100, getChangelogPort(changelog1ID), 1000, emptyOldChanges);
 
       Thread.sleep(2000);
-      
+
       // In S1 launch the total update
       addTask(taskInitFromS2, ResultCode.SUCCESS, 0);
 
-      // S2 should receive init msg 
+      // S2 should receive init msg
       SynchronizationMessage msg;
       msg = server2.receive();
       if (!(msg instanceof InitializeRequestMessage))
@@ -846,7 +846,7 @@
       InitializeRequestMessage initMsg = (InitializeRequestMessage)msg;
 
       // S2 publishes entries to S1
-      makeBrokerPublishEntries(server2, server2ID, initMsg.getsenderID(), 
+      makeBrokerPublishEntries(server2, server2ID, initMsg.getsenderID(),
           initMsg.getsenderID());
 
       // Wait for task (import) completion in S1
@@ -855,17 +855,17 @@
 
       // Test import result in S1
       testEntriesInDb();
-      
+
       cleanEntries();
 
-      log("Successfully ending " + testCase);    
+      log("Successfully ending " + testCase);
     }
     catch(Exception e)
     {
       fail(testCase + " Exception:"+ e.getMessage() + " " + stackTraceToSingleLineString(e));
     }
   }
-  
+
   /**
    * Tests the export side of the Initialize task
    */
@@ -873,14 +873,14 @@
   public void InitializeExport() throws Exception
   {
     String testCase = "Synchronization/InitializeExport";
-    
+
     log("Starting "+testCase);
 
     changelog1 = createChangelogServer(changelog1ID);
 
     // Connect DS to the changelog
     connectServer1ToChangelog(changelog1ID);
-      
+
     addTestEntriesToDB();
 
     if (server2 == null)
@@ -907,7 +907,7 @@
   public void InitializeTargetExport() throws Exception
   {
     String testCase = "Synchronization/InitializeTargetExport";
-    
+
     log("Starting " + testCase);
 
     changelog1 = createChangelogServer(changelog1ID);
@@ -924,7 +924,7 @@
         server2ID, 100, getChangelogPort(changelog1ID), 1000, emptyOldChanges);
 
     Thread.sleep(1000);
-    
+
     // Launch in S1 the task that will initialize S2
     addTask(taskInitTargetS2, ResultCode.SUCCESS, 0);
 
@@ -933,13 +933,13 @@
 
     // Tests that entries have been received by S2
     receiveUpdatedEntries(server2, server2ID, updatedEntries);
-    
+
     cleanEntries();
 
-    log("Successfully ending " + testCase);    
-   
+    log("Successfully ending " + testCase);
+
   }
-  
+
   /**
    * Tests the import side of the InitializeTarget task
    */
@@ -947,7 +947,7 @@
   public void InitializeTargetExportAll() throws Exception
   {
     String testCase = "Synchronization/InitializeTargetExportAll";
-    
+
     log("Starting " + testCase);
 
     changelog1 = createChangelogServer(changelog1ID);
@@ -962,12 +962,12 @@
     if (server2==null)
       server2 = openChangelogSession(DN.decode("dc=example,dc=com"),
         server2ID, 100, getChangelogPort(changelog1ID), 1000, emptyOldChanges);
-    
+
     ChangelogBroker server3 = openChangelogSession(DN.decode("dc=example,dc=com"),
         server3ID, 100, getChangelogPort(changelog1ID), 1000, emptyOldChanges);
 
     Thread.sleep(1000);
-    
+
     // Launch in S1 the task that will initialize S2
     addTask(taskInitTargetAll, ResultCode.SUCCESS, 0);
 
@@ -977,13 +977,13 @@
     // Tests that entries have been received by S2
     receiveUpdatedEntries(server2, server2ID, updatedEntries);
     receiveUpdatedEntries(server3, server3ID, updatedEntries);
-    
+
     cleanEntries();
 
-    log("Successfully ending " + testCase);    
-   
+    log("Successfully ending " + testCase);
+
   }
-  
+
  /**
    * Tests the import side of the InitializeTarget task
    */
@@ -1006,7 +1006,7 @@
 
       // Creates config to synchronize suffix
       connectServer1ToChangelog(changelog1ID);
-      
+
       // S2 publishes entries to S1
       makeBrokerPublishEntries(server2, server2ID, server1ID, server2ID);
 
@@ -1017,14 +1017,14 @@
 
       cleanEntries();
 
-      log("Successfully ending " + testCase);    
+      log("Successfully ending " + testCase);
     }
     catch(Exception e)
     {
       fail(testCase + " Exception:"+ e.getMessage() + " " + stackTraceToSingleLineString(e));
     }
   }
-  
+
   /**
    * Tests the import side of the InitializeTarget task
    */
@@ -1037,7 +1037,7 @@
     {
       log("Starting " + testCase);
 
-      // Invalid domain base dn      
+      // Invalid domain base dn
       Entry taskInitTarget = TestCaseUtils.makeEntry(
           "dn: ds-task-id=" + UUID.randomUUID() +
           ",cn=Scheduled Tasks,cn=Tasks",
@@ -1047,7 +1047,7 @@
           "ds-task-class-name: org.opends.server.tasks.InitializeTargetTask",
           "ds-task-initialize-domain-dn: foo",
           "ds-task-initialize-remote-replica-server-id: " + server2ID);
-      addTask(taskInitTarget, ResultCode.INVALID_DN_SYNTAX, 
+      addTask(taskInitTarget, ResultCode.INVALID_DN_SYNTAX,
           TaskMessages.MSGID_TASK_INITIALIZE_INVALID_DN);
 
       // Domain base dn not related to any domain
@@ -1060,25 +1060,25 @@
           "ds-task-class-name: org.opends.server.tasks.InitializeTargetTask",
           "ds-task-initialize-domain-dn: dc=foo",
           "ds-task-initialize-remote-replica-server-id: " + server2ID);
-      addTask(taskInitTarget, ResultCode.OTHER, 
-          LogMessages.MSGID_NO_MATCHING_DOMAIN);
+      addTask(taskInitTarget, ResultCode.OTHER,
+          MSGID_NO_MATCHING_DOMAIN);
 
       // Invalid scope
       // createTask(taskInitTargetS2);
-      
+
       // Scope containing a serverID absent from the domain
       // createTask(taskInitTargetS2);
 
       cleanEntries();
 
-      log("Successfully ending " + testCase);    
+      log("Successfully ending " + testCase);
     }
     catch(Exception e)
     {
       fail(testCase + " Exception:"+ e.getMessage() + " " + stackTraceToSingleLineString(e));
     }
   }
-  
+
   /**
    * Tests the import side of the InitializeTarget task
    */
@@ -1097,7 +1097,7 @@
       // Creates config to synchronize suffix
       connectServer1ToChangelog(changelog1ID);
 
-      // Invalid domain base dn      
+      // Invalid domain base dn
       Entry taskInit = TestCaseUtils.makeEntry(
           "dn: ds-task-id=" + UUID.randomUUID() +
           ",cn=Scheduled Tasks,cn=Tasks",
@@ -1107,7 +1107,7 @@
           "ds-task-class-name: org.opends.server.tasks.InitializeTask",
           "ds-task-initialize-domain-dn: foo",
           "ds-task-initialize-source: " + server2ID);
-      addTask(taskInit, ResultCode.INVALID_DN_SYNTAX, 
+      addTask(taskInit, ResultCode.INVALID_DN_SYNTAX,
           TaskMessages.MSGID_TASK_INITIALIZE_INVALID_DN);
 
       // Domain base dn not related to any domain
@@ -1120,7 +1120,7 @@
           "ds-task-class-name: org.opends.server.tasks.InitializeTask",
           "ds-task-initialize-domain-dn: dc=foo",
           "ds-task-initialize-source: " + server2ID);
-      addTask(taskInit, ResultCode.OTHER, LogMessages.MSGID_NO_MATCHING_DOMAIN);
+      addTask(taskInit, ResultCode.OTHER, MSGID_NO_MATCHING_DOMAIN);
 
       // Invalid Source
       taskInit = TestCaseUtils.makeEntry(
@@ -1132,29 +1132,29 @@
           "ds-task-class-name: org.opends.server.tasks.InitializeTask",
           "ds-task-initialize-domain-dn: " + baseDn,
           "ds-task-initialize-source: -3");
-      addTask(taskInit, ResultCode.OTHER, 
-          LogMessages.MSGID_INVALID_IMPORT_SOURCE);
-      
+      addTask(taskInit, ResultCode.OTHER,
+          MSGID_INVALID_IMPORT_SOURCE);
+
       // Scope containing a serverID absent from the domain
       // createTask(taskInitTargetS2);
 
       cleanEntries();
 
-      log("Successfully ending " + testCase);    
+      log("Successfully ending " + testCase);
     }
     catch(Exception e)
     {
       fail(testCase + " Exception:"+ e.getMessage() + " " + stackTraceToSingleLineString(e));
     }
   }
- 
+
   @Test(enabled=false)
   public void InitializeTargetBroken() throws Exception
   {
     String testCase = "InitializeTargetBroken";
     fail(testCase + " NYI");
   }
-  
+
   @Test(enabled=false)
   public void InitializeBroken() throws Exception
   {
@@ -1166,12 +1166,12 @@
   public void InitializeTargetExportMultiSS() throws Exception
   {
     String testCase = "Synchronization/InitializeTargetExportMultiSS";
-    
+
     log("Starting " + testCase);
 
     // Create 2 changelogs
     changelog1 = createChangelogServer(changelog1ID);
-    
+
     changelog2 = createChangelogServer(changelog2ID);
 
     // Creates config to synchronize suffix
@@ -1189,7 +1189,7 @@
     }
 
     Thread.sleep(1000);
-    
+
     // Launch in S1 the task that will initialize S2
     addTask(taskInitTargetS2, ResultCode.SUCCESS, 0);
 
@@ -1198,40 +1198,40 @@
 
     // Tests that entries have been received by S2
     receiveUpdatedEntries(server2, server2ID, updatedEntries);
-    
+
     cleanEntries();
 
     changelog2.shutdown();
     changelog2 = null;
-    
-    log("Successfully ending " + testCase);    
-   
+
+    log("Successfully ending " + testCase);
+
   }
-  
+
   @Test(enabled=false)
   public void InitializeExportMultiSS() throws Exception
   {
-    String testCase = "Synchronization/InitializeExportMultiSS";    
+    String testCase = "Synchronization/InitializeExportMultiSS";
     log("Starting "+testCase);
 
     // Create 2 changelogs
     changelog1 = createChangelogServer(changelog1ID);
     Thread.sleep(3000);
-    
+
     changelog2 = createChangelogServer(changelog2ID);
     Thread.sleep(3000);
 
     // Connect DS to the changelog 1
     connectServer1ToChangelog(changelog1ID);
 
-    // Put entries in DB       
+    // Put entries in DB
     addTestEntriesToDB();
-    
+
     // Connect a broker acting as server 2 to changelog2
     if (server2 == null)
     {
       server2 = openChangelogSession(DN.decode("dc=example,dc=com"),
-        server2ID, 100, getChangelogPort(changelog2ID), 
+        server2ID, 100, getChangelogPort(changelog2ID),
         1000, emptyOldChanges);
     }
 
@@ -1252,13 +1252,13 @@
 
     log("Successfully ending "+testCase);
   }
-  
+
   @Test(enabled=false)
   public void InitializeNoSource() throws Exception
   {
     String testCase = "InitializeNoSource";
     log("Starting "+testCase);
-    
+
     // Start SS
     changelog1 = createChangelogServer(changelog1ID);
 
@@ -1274,34 +1274,34 @@
         "ds-task-class-name: org.opends.server.tasks.InitializeTask",
         "ds-task-initialize-domain-dn: "+baseDn,
         "ds-task-initialize-replica-server-id: " + 20);
-    
+
     addTask(taskInit, ResultCode.SUCCESS, 0);
-    
+
     waitTaskState(taskInit, TaskState.STOPPED_BY_ERROR,
-        LogMessages.MSGID_NO_REACHABLE_PEER_IN_THE_DOMAIN);
+        MSGID_NO_REACHABLE_PEER_IN_THE_DOMAIN);
 
     if (sd != null)
     {
        log("SynchronizationDomain: Import/Export is running ? " + sd.ieRunning());
     }
-    
+
     log("Successfully ending "+testCase);
 
   }
-  
+
   @Test(enabled=false)
   public void InitializeTargetNoTarget() throws Exception
   {
     String testCase = "InitializeTargetNoTarget"  + baseDn;
     log("Starting "+testCase);
-    
+
     // Start SS
     changelog1 = createChangelogServer(changelog1ID);
 
     // Creates config to synchronize suffix
     connectServer1ToChangelog(changelog1ID);
 
-    // Put entries in DB       
+    // Put entries in DB
     addTestEntriesToDB();
 
     Entry taskInit = TestCaseUtils.makeEntry(
@@ -1313,20 +1313,20 @@
         "ds-task-class-name: org.opends.server.tasks.InitializeTargetTask",
         "ds-task-initialize-target-domain-dn: "+baseDn,
         "ds-task-initialize-target-scope: " + 10);
-    
+
     addTask(taskInit, ResultCode.SUCCESS, 0);
-    
-    waitTaskState(taskInit, TaskState.STOPPED_BY_ERROR, 
-        LogMessages.MSGID_NO_REACHABLE_PEER_IN_THE_DOMAIN);
+
+    waitTaskState(taskInit, TaskState.STOPPED_BY_ERROR,
+        MSGID_NO_REACHABLE_PEER_IN_THE_DOMAIN);
 
     if (sd != null)
     {
        log("SynchronizationDomain: Import/Export is running ? " + sd.ieRunning());
     }
-    
+
     log("Successfully ending "+testCase);
   }
-  
+
   @Test(enabled=false)
   public void InitializeStopped() throws Exception
   {
@@ -1351,12 +1351,12 @@
     String testCase = "InitializeTargetCompressed";
     fail(testCase + " NYI");
   }
-  
+
   @Test(enabled=false)
   public void InitializeSimultaneous() throws Exception
   {
     String testCase = "InitializeSimultaneous";
-    
+
     // Start SS
     changelog1 = createChangelogServer(changelog1ID);
 
@@ -1364,7 +1364,7 @@
     if (server2 == null)
     {
       server2 = openChangelogSession(DN.decode("dc=example,dc=com"),
-        server2ID, 100, getChangelogPort(changelog1ID), 
+        server2ID, 100, getChangelogPort(changelog1ID),
         1000, emptyOldChanges);
     }
 
@@ -1380,11 +1380,11 @@
         "ds-task-class-name: org.opends.server.tasks.InitializeTask",
         "ds-task-initialize-domain-dn: "+baseDn,
         "ds-task-initialize-replica-server-id: " + server2ID);
-    
+
     addTask(taskInit, ResultCode.SUCCESS, 0);
 
     Thread.sleep(3000);
-    
+
     Entry taskInit2 = TestCaseUtils.makeEntry(
         "dn: ds-task-id=" + UUID.randomUUID() +
         ",cn=Scheduled Tasks,cn=Tasks",
@@ -1394,16 +1394,16 @@
         "ds-task-class-name: org.opends.server.tasks.InitializeTask",
         "ds-task-initialize-domain-dn: "+baseDn,
         "ds-task-initialize-replica-server-id: " + server2ID);
-    
+
     // Second task is expected to be rejected
     addTask(taskInit2, ResultCode.SUCCESS, 0);
-    
-    waitTaskState(taskInit2, TaskState.STOPPED_BY_ERROR, 
-        LogMessages.MSGID_SIMULTANEOUS_IMPORT_EXPORT_REJECTED);
-    
+
+    waitTaskState(taskInit2, TaskState.STOPPED_BY_ERROR,
+        MSGID_SIMULTANEOUS_IMPORT_EXPORT_REJECTED);
+
     // First task is stilll running
     waitTaskState(taskInit, TaskState.RUNNING, -1);
-    
+
     // External request is supposed to be rejected
 
     // Now tests error in the middle of an import
@@ -1416,11 +1416,11 @@
         1);
 
     cleanEntries();
-    
+
     log("Successfully ending "+testCase);
- 
+
   }
-  
+
   /**
    * Disconnect broker and remove entries from the local DB
    * @throws Exception
@@ -1432,12 +1432,12 @@
     {
        log("SynchronizationDomain: Import/Export is running ? " + sd.ieRunning());
     }
-    
+
     // Clean brokers
     if (server2 != null)
     {
       server2.stop();
-      
+
       TestCaseUtils.sleep(100); // give some time to the broker to disconnect
       // fromthe changelog server.
       server2 = null;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ProtocolWindowTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ProtocolWindowTest.java
index 7cd2c2b..fd4c45f 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ProtocolWindowTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/ProtocolWindowTest.java
@@ -39,11 +39,9 @@
 import org.opends.server.core.AddOperation;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ModifyOperation;
-import org.opends.server.core.Operation;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.internal.InternalSearchOperation;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.protocols.ldap.LDAPFilter;
 import org.opends.server.synchronization.plugin.ChangelogBroker;
 import org.opends.server.synchronization.protocol.AddMsg;
@@ -55,8 +53,10 @@
 import org.opends.server.types.Entry;
 import org.opends.server.types.ErrorLogCategory;
 import org.opends.server.types.ErrorLogSeverity;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.Modification;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.Operation;
 import org.opends.server.types.OperationType;
 import org.opends.server.types.ResultCode;
 import org.opends.server.types.SearchScope;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SchemaSynchronizationTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SchemaSynchronizationTest.java
index 142bcf1..979c9b5 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SchemaSynchronizationTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/SchemaSynchronizationTest.java
@@ -42,7 +42,6 @@
 import org.opends.server.api.SynchronizationProvider;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ModifyOperation;
-import org.opends.server.core.Operation;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.ldap.LDAPModification;
 import org.opends.server.synchronization.common.ChangeNumberGenerator;
@@ -57,6 +56,8 @@
 import org.opends.server.types.ErrorLogSeverity;
 import org.opends.server.types.Modification;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.Operation;
+import org.opends.server.types.RawModification;
 import org.opends.server.types.ResultCode;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
@@ -84,7 +85,7 @@
     // This test suite depends on having the schema available.
     TestCaseUtils.startServer();
     schemaCheck = DirectoryServer.checkSchema();
-    
+
     // find  a free port for the changelog server
     ServerSocket socket = TestCaseUtils.bindFreePort();
     changelogPort = socket.getLocalPort();
@@ -176,11 +177,11 @@
                  "The received synchronization message is not a MODIFY msg");
       ModifyOperation receivedModifyOperation = (ModifyOperation) receivedOp;
 
-      List<LDAPModification> rcvdRawMods =
+      List<RawModification> rcvdRawMods =
         receivedModifyOperation.getRawModifications();
 
       this.rcvdMods = new ArrayList<Modification>();
-      for (LDAPModification m : rcvdRawMods)
+      for (RawModification m : rcvdRawMods)
       {
         this.rcvdMods.add(m.toModification());
       }
@@ -291,11 +292,11 @@
                "The received synchronization message is not a MODIFY msg");
     ModifyOperation receivedModifyOperation = (ModifyOperation) receivedOp;
 
-    List<LDAPModification> rcvdRawMods =
+    List<RawModification> rcvdRawMods =
       receivedModifyOperation.getRawModifications();
 
     this.rcvdMods = new ArrayList<Modification>();
-    for (LDAPModification m : rcvdRawMods)
+    for (RawModification m : rcvdRawMods)
     {
       this.rcvdMods.add(m.toModification());
     }
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/StressTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/StressTest.java
index 9f91a5a..90fa202 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/StressTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/StressTest.java
@@ -44,7 +44,6 @@
 import org.opends.server.core.AddOperation;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ModifyOperation;
-import org.opends.server.core.Operation;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.synchronization.plugin.ChangelogBroker;
 import org.opends.server.synchronization.protocol.AddMsg;
@@ -59,6 +58,7 @@
 import org.opends.server.types.InitializationException;
 import org.opends.server.types.Modification;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.Operation;
 import org.opends.server.types.OperationType;
 import org.opends.server.types.ResultCode;
 import org.testng.annotations.BeforeClass;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java
index 95cb27d..f6986ed 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/UpdateOperationTest.java
@@ -51,7 +51,6 @@
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ModifyDNOperation;
 import org.opends.server.core.ModifyOperation;
-import org.opends.server.core.Operation;
 import org.opends.server.protocols.asn1.ASN1OctetString;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.ldap.LDAPAttribute;
@@ -1215,7 +1214,7 @@
 
     LDAPModification m = new LDAPModification(ModificationType.REPLACE, a);
 
-    ArrayList<LDAPModification> modList = new ArrayList<LDAPModification>(1);
+    ArrayList<RawModification> modList = new ArrayList<RawModification>(1);
     modList.add(m);
 
     InternalClientConnection conn =
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/changelog/dbHandlerTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/changelog/dbHandlerTest.java
index 00174da..5eb03b6 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/changelog/dbHandlerTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/changelog/dbHandlerTest.java
@@ -56,12 +56,13 @@
     // configure a Changelog server.
     ChangelogFakeConfiguration conf =
       new ChangelogFakeConfiguration(changelogPort, null, 0,
-                                     2, 0, 100, null); 
+                                     2, 0, 100, null);
     Changelog changelog = new Changelog(conf);
 
     // create or clean a directory for the dbHandler
     String buildRoot = System.getProperty(TestCaseUtils.PROPERTY_BUILD_ROOT);
-    String path = buildRoot + File.separator + "dbHandler";
+    String path = buildRoot + File.separator + "build" + File.separator +
+                  "unit-tests" + File.separator + "dbHandler";
     File testRoot = new File(path);
     if (testRoot.exists())
     {
@@ -73,26 +74,26 @@
 
     DbHandler handler =
       new DbHandler((short) 1, DN.decode("o=test"), changelog, dbEnv);
-    
+
     ChangeNumberGenerator gen = new ChangeNumberGenerator((short)1, 0);
     ChangeNumber changeNumber1 = gen.NewChangeNumber();
     ChangeNumber changeNumber2 = gen.NewChangeNumber();
     ChangeNumber changeNumber3 = gen.NewChangeNumber();
-    
-    DeleteMsg update1 = new DeleteMsg("o=test", changeNumber1, "uid"); 
-    DeleteMsg update2 = new DeleteMsg("o=test", changeNumber2, "uid"); 
-    DeleteMsg update3 = new DeleteMsg("o=test", changeNumber3, "uid"); 
-    
+
+    DeleteMsg update1 = new DeleteMsg("o=test", changeNumber1, "uid");
+    DeleteMsg update2 = new DeleteMsg("o=test", changeNumber2, "uid");
+    DeleteMsg update3 = new DeleteMsg("o=test", changeNumber3, "uid");
+
     handler.add(update1);
     handler.add(update2);
     handler.add(update3);
-    
+
     // The ChangeNumber should not get purged
     assertEquals(changeNumber1, handler.getFirstChange());
     assertEquals(changeNumber3, handler.getLastChange());
-    
+
     handler.setPurgeDelay(1);
-    
+
     boolean purged = false;
     int count = 300;  // wait at most 60 seconds
     while (!purged && (count>0))
@@ -109,11 +110,11 @@
         purged = true;
       }
     }
-    
+
     handler.shutdown();
     dbEnv.shutdown();
     changelog.shutdown();
-    
+
     TestCaseUtils.deleteDirectory(testRoot);
   }
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/protocol/SyncMessagesTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/protocol/SyncMessagesTest.java
deleted file mode 100644
index bdbc392..0000000
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/protocol/SyncMessagesTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License").  You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at
- * trunk/opends/resource/legal-notices/OpenDS.LICENSE
- * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at
- * trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
- * add the following below this CDDL HEADER, with the fields enclosed
- * by brackets "[]" replaced with your own identifying information:
- *      Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- *
- *
- *      Portions Copyright 2006-2007 Sun Microsystems, Inc.
- */
-package org.opends.server.synchronization.protocol;
-
-import java.lang.reflect.Field;
-
-import org.opends.server.messages.MessageHandler;
-import org.opends.server.synchronization.SynchronizationTestCase;
-import org.opends.server.synchronization.common.LogMessages;
-import org.testng.annotations.Test;
-import static org.testng.Assert.*;
-
-
-/**
- * Test of ValueInfo
- */
-public class SyncMessagesTest extends SynchronizationTestCase
-{
-  /**
-   * Create a ValueInfo and check the methods
-   */
-  @Test()
-  public void synchroMessagesTest()
-         throws Exception
-  {
-    LogMessages.registerMessages() ;
-    Field fields[] = LogMessages.class.getFields() ;
-    LogMessages synMsg = new LogMessages() ;
-    for (Field f : fields)
-    {
-      if (f.getClass().equals(Integer.class))
-      {
-        // Get the id
-        String msg = MessageHandler.getMessage(f.getInt(synMsg));
-        assertFalse(msg.startsWith("Unknown message for message ID"));
-      }
-    }
-  }
-
-
-}
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/protocol/SynchronizationMsgTest.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/protocol/SynchronizationMsgTest.java
index 0dccba8..ccf920c 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/protocol/SynchronizationMsgTest.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/synchronization/protocol/SynchronizationMsgTest.java
@@ -43,7 +43,6 @@
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ModifyDNOperation;
 import org.opends.server.core.ModifyOperation;
-import org.opends.server.core.Operation;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.synchronization.SynchronizationTestCase;
 import org.opends.server.synchronization.common.ChangeNumber;
@@ -56,6 +55,7 @@
 import org.opends.server.types.Modification;
 import org.opends.server.types.ModificationType;
 import org.opends.server.types.ObjectClass;
+import org.opends.server.types.Operation;
 import org.opends.server.types.RDN;
 import org.opends.server.util.TimeThread;
 import org.testng.annotations.DataProvider;
@@ -574,7 +574,7 @@
     short requestorID = 3;
     long entryCount = 4;
     DN baseDN = DN.decode("dc=example");
-      
+
     InitializeTargetMessage msg = new InitializeTargetMessage(
         baseDN, senderID, targetID, requestorID, entryCount);
     InitializeTargetMessage newMsg = new InitializeTargetMessage(msg.getBytes());
@@ -583,7 +583,7 @@
     assertEquals(msg.getRequestorID(), newMsg.getRequestorID());
     assertEquals(msg.getEntryCount(), newMsg.getEntryCount());
     assertTrue(msg.getBaseDN().equals(newMsg.getBaseDN())) ;
-    
+
     assertEquals(senderID, newMsg.getsenderID());
     assertEquals(targetID, newMsg.getDestination());
     assertEquals(requestorID, newMsg.getRequestorID());
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPAuthenticationHandlerTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPAuthenticationHandlerTestCase.java
index e953696..f6515a5 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPAuthenticationHandlerTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/tools/LDAPAuthenticationHandlerTestCase.java
@@ -50,8 +50,8 @@
 import org.opends.server.protocols.asn1.ASN1Writer;
 import org.opends.server.protocols.internal.InternalClientConnection;
 import org.opends.server.protocols.ldap.LDAPControl;
-import org.opends.server.protocols.ldap.LDAPException;
 import org.opends.server.types.Entry;
+import org.opends.server.types.LDAPException;
 import org.opends.server.types.ResultCode;
 
 import static org.testng.Assert.*;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestLDIFReader.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestLDIFReader.java
index 6de21ac..57714f0 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestLDIFReader.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestLDIFReader.java
@@ -47,6 +47,7 @@
 import org.opends.server.types.Modification;
 import org.opends.server.types.ModificationType;
 import org.opends.server.types.ObjectClass;
+import org.opends.server.types.RawModification;
 import org.opends.server.types.RDN;
 import org.testng.Assert;
 import org.testng.annotations.AfterClass;
@@ -463,7 +464,7 @@
       ModifyDNChangeRecordEntry modifyDN;
       DN dn;
       RDN rdn;
-      Iterator<LDAPModification> i;
+      Iterator<RawModification> i;
       Modification mod;
       Attribute attr;
       LinkedHashSet<AttributeValue> values;
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestLDIFWriter.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestLDIFWriter.java
index eea765e..125c2e3 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestLDIFWriter.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestLDIFWriter.java
@@ -45,6 +45,7 @@
 import org.opends.server.types.LDIFExportConfig;
 import org.opends.server.types.LDIFImportConfig;
 import org.opends.server.types.Modification;
+import org.opends.server.types.RawModification;
 import org.testng.Assert;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.DataProvider;
@@ -58,10 +59,10 @@
 
   // Data used in writeModifyEntry tests.
   private Object[][] MODIFY_ENTRY_DATA_LDIF;
-  
+
   // Data used in writeModifyDNEntry tests.
   private Object[][] MODIFY_DN_ENTRY_DATA_LDIF;
-  
+
   /**
    * Tests will be performed against a byte array output stream.
    */
@@ -91,7 +92,7 @@
 
     /**
      * Get the LDIF writer.
-     * 
+     *
      * @return Returns the LDIF writer.
      */
     public LDIFWriter getLDIFWriter() {
@@ -100,7 +101,7 @@
 
     /**
      * Close the writer and get a string reader for the LDIF content.
-     * 
+     *
      * @return Returns the string contents of the writer.
      * @throws Exception
      *           If an error occurred closing the writer.
@@ -114,14 +115,14 @@
 
     /**
      * Close the writer and get an LDIF reader for the LDIF content.
-     * 
+     *
      * @return Returns an LDIF Reader.
      * @throws Exception
      *           If an error occurred closing the writer.
      */
     public LDIFReader getLDIFReader() throws Exception {
       writer.close();
-      
+
       ByteArrayInputStream istream = new ByteArrayInputStream(stream.toByteArray());
       LDIFImportConfig config = new LDIFImportConfig(istream);
       return new LDIFReader(config);
@@ -130,7 +131,7 @@
 
   /**
    * Once-only initialization.
-   * 
+   *
    * @throws Exception
    *           If an unexpected error occurred.
    */
@@ -139,7 +140,7 @@
     // This test suite depends on having the schema available, so we'll
     // start the server.
     TestCaseUtils.startServer();
-    
+
     String[] modifyEntryDataLDIF = {
         "dn: cn=Paula Jensen,ou=Product Development,dc=airius,dc=com\n" +
         "changetype: modify\n" +
@@ -174,7 +175,7 @@
     List<Object[]> changes = createChangeRecords(
         ModifyChangeRecordEntry.class, modifyEntryDataLDIF);
     MODIFY_ENTRY_DATA_LDIF = changes.toArray(new Object[0][]);
-    
+
     String[] modifyDNEntryDataLDIF = {
         "dn: cn=Paula Jensen,ou=Product Development,dc=airius,dc=com\n" +
         "changetype: modrdn\n" +
@@ -194,7 +195,7 @@
   /**
    * Check that creating a writer and closing it immediately does not
    * write anything.
-   * 
+   *
    * @throws Exception
    *           If the test failed unexpectedly.
    */
@@ -207,7 +208,7 @@
 
   /**
    * LDIF writer - example comment strings.
-   * 
+   *
    * @return Returns an array of comment strings and their expected LDIF
    *         form.
    */
@@ -257,7 +258,7 @@
 
   /**
    * Test the {@link LDIFWriter#writeComment(String, int)} method.
-   * 
+   *
    * @param comment
    *          The input comment string.
    * @param wrapColumn
@@ -280,7 +281,7 @@
 
   /**
    * LDIF writer - sample entry provider.
-   * 
+   *
    * @return Returns an array of LDAP entry objects.
    * @throws Exception If an error occurred whilst constructing the test entries.
    */
@@ -301,36 +302,36 @@
           "description", "root DSE"
         },
     };
-    
+
     List<Entry[]> entries = new LinkedList<Entry[]>();
-    
+
     for (String[] s : input) {
       DN dn = DN.decode(s[0]);
       Entry entry = new Entry(dn, null, null, null);
-      
+
       for (int i = 1; i < s.length; i+=2) {
         String atype = toLowerCase(s[i]);
         String avalue = toLowerCase(s[i+1]);
-        
+
         if (atype.equals("objectclass")) {
           entry.addObjectClass(DirectoryServer.getObjectClass(avalue));
         } else {
           Attribute attr = new Attribute(atype, avalue);
-          
+
           // Assume that there will be no duplicates.
           entry.addAttribute(attr, null);
         }
       }
-      
+
       entries.add(new Entry[]{ entry });
     }
-    
+
     return entries.toArray(new Object[0][]);
   }
 
   /**
    * Test the {@link LDIFWriter#writeEntry(Entry)} method.
-   * 
+   *
    * @param entry
    *          The entry to ouput.
    * @throws Exception
@@ -350,13 +351,13 @@
     LDIFReader reader = writer.getLDIFReader();
     Entry readEntry = reader.readEntry();
     reader.close();
-    
+
     Assert.assertEquals(readEntry.getDN(), entry.getDN());
   }
 
   /**
    * Test the {@link LDIFWriter#writeAddChangeRecord(Entry)} method.
-   * 
+   *
    * @param entry
    *          The entry to ouput.
    * @throws Exception
@@ -376,14 +377,14 @@
     LDIFReader reader = writer.getLDIFReader();
     ChangeRecordEntry add = reader.readChangeRecord(false);
     reader.close();
-    
+
     Assert.assertTrue(add instanceof AddChangeRecordEntry);
     Assert.assertEquals(add.getDN(), entry.getDN());
   }
 
   /**
    * LDIF writer - sample modification provider.
-   * 
+   *
    * @return Returns an array of LDAP modification objects.
    * @throws Exception If an error occurred whilst constructing the test entries.
    */
@@ -395,7 +396,7 @@
   /**
    * Test the {@link LDIFWriter#writeModifyChangeRecord(DN, List)}
    * method.
-   * 
+   *
    * @param change
    *          The modification change record.
    * @param expectedLDIF
@@ -411,7 +412,7 @@
     LDIFWriter ldifWriter = writer.getLDIFWriter();
 
     List<Modification> mods = new LinkedList<Modification>();
-    for (LDAPModification lmod : change.getModifications()) {
+    for (RawModification lmod : change.getModifications()) {
       mods.add(lmod.toModification());
     }
     ldifWriter.writeModifyChangeRecord(change.getDN(), mods);
@@ -421,7 +422,7 @@
 
   /**
    * Test the {@link LDIFWriter#writeDeleteChangeRecord(Entry, boolean)} method.
-   * 
+   *
    * @param entry
    *          The entry to ouput.
    * @throws Exception
@@ -439,13 +440,13 @@
       "dn: " + entry.getDN(),
       "changetype: delete"
     };
-    
+
     checkLDIFOutput(writer, expectedLDIF);
   }
 
   /**
    * LDIF writer - sample modification DN provider.
-   * 
+   *
    * @return Returns an array of LDAP modification DN objects.
    * @throws Exception If an error occurred whilst constructing the test entries.
    */
@@ -457,7 +458,7 @@
   /**
    * Test the {@link LDIFWriter#writeModifyChangeRecord(DN, List)}
    * method.
-   * 
+   *
    * @param change
    *          The modification change record.
    * @param expectedLDIF
@@ -482,7 +483,7 @@
   /**
    * Close the LDIF writer and read its content and check it against the
    * expected output.
-   * 
+   *
    * @param writer
    *          The LDIF writer.
    * @param expectedLDIF
@@ -536,7 +537,7 @@
   /**
    * Generate change records of the requested type from the input LDIF
    * strings.
-   * 
+   *
    * @param inputLDIF
    *          The input LDIF change records.
    * @return The data provider object array.
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestModifyChangeRecordEntry.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestModifyChangeRecordEntry.java
index 3ba5cd7..d756be8 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestModifyChangeRecordEntry.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestModifyChangeRecordEntry.java
@@ -36,6 +36,7 @@
 import org.opends.server.types.Attribute;
 import org.opends.server.types.DN;
 import org.opends.server.types.ModificationType;
+import org.opends.server.types.RawModification;
 import org.testng.Assert;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
@@ -50,7 +51,7 @@
  */
 public final class TestModifyChangeRecordEntry extends UtilTestCase {
   // Set of changes.
-  private List<LDAPModification> modifications;
+  private List<RawModification> modifications;
 
   // The attribute being added in the modifications.
   private Attribute attribute;
@@ -68,7 +69,7 @@
     TestCaseUtils.startServer();
 
     // Create a simple set of modifications.
-    modifications = new ArrayList<LDAPModification>();
+    modifications = new ArrayList<RawModification>();
     attribute = new Attribute("cn", "hello world");
     LDAPAttribute lattribute = new LDAPAttribute(attribute);
     LDAPModification modification = new LDAPModification(
@@ -142,11 +143,11 @@
    */
   @Test
   public void testGetModificationsEmpty() throws Exception {
-    List<LDAPModification> empty = Collections.emptyList();
+    List<RawModification> empty = Collections.emptyList();
     ModifyChangeRecordEntry entry = new ModifyChangeRecordEntry(DN.nullDN(),
                                                                 empty);
 
-    List<LDAPModification> mods = entry.getModifications();
+    List<RawModification> mods = entry.getModifications();
     Assert.assertEquals(mods.size(), 0);
   }
 
@@ -161,10 +162,10 @@
     ModifyChangeRecordEntry entry = new ModifyChangeRecordEntry(DN.nullDN(),
         modifications);
 
-    List<LDAPModification> mods = entry.getModifications();
+    List<RawModification> mods = entry.getModifications();
     Assert.assertEquals(mods.size(), 1);
 
-    LDAPModification first = mods.get(0);
+    RawModification first = mods.get(0);
     Assert.assertEquals(first.getModificationType(), ModificationType.ADD);
     Assert.assertEquals(first.getAttribute().toAttribute(), attribute);
   }

--
Gitblit v1.10.0