From 80c58327faaa4873369f6bb949e62792c2f708e0 Mon Sep 17 00:00:00 2001
From: kenneth_suter <kenneth_suter@localhost>
Date: Wed, 15 Aug 2007 21:34:53 +0000
Subject: [PATCH] This commit is a step toward getting OpenDS internationalized. There are still issues to be resolved before we can declare that we are internationalized but this commit covers the bulk of changes needed at this time.

---
 opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java | 1588 +++++++++++++++++++++++++++-------------------------------
 1 files changed, 737 insertions(+), 851 deletions(-)

diff --git a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java
index 4bc2331..a806599 100644
--- a/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java
+++ b/opends/src/server/org/opends/server/workflowelement/localbackend/LocalBackendWorkflowElement.java
@@ -26,10 +26,13 @@
  */
 package org.opends.server.workflowelement.localbackend;
 
+import org.opends.messages.Message;
+import org.opends.messages.MessageBuilder;
+
 import static org.opends.server.config.ConfigConstants.*;
 import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
-import static org.opends.server.messages.CoreMessages.*;
-import static org.opends.server.messages.MessageHandler.getMessage;
+import static org.opends.messages.CoreMessages.*;
+import static org.opends.messages.ToolMessages.*;
 import static org.opends.server.util.ServerConstants.*;
 import static org.opends.server.util.StaticUtils.getExceptionMessage;
 import static org.opends.server.util.StaticUtils.secondsToTimeString;
@@ -104,8 +107,8 @@
 import org.opends.server.types.DebugLogLevel;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.Entry;
-import org.opends.server.types.ErrorLogCategory;
-import org.opends.server.types.ErrorLogSeverity;
+
+
 import org.opends.server.types.LockManager;
 import org.opends.server.types.Modification;
 import org.opends.server.types.ModificationType;
@@ -251,8 +254,7 @@
       {
         localOp.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
         localOp.appendErrorMessage(
-            getMessage(MSGID_MODIFY_NO_MODIFICATIONS,
-            String.valueOf(entryDN)));
+            ERR_MODIFY_NO_MODIFICATIONS.get(String.valueOf(entryDN)));
         break modifyProcessing;
       }
 
@@ -282,8 +284,8 @@
 
           localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-          int msgID = MSGID_MODIFY_MUST_CHANGE_PASSWORD;
-          localOp.appendErrorMessage(getMessage(msgID));
+
+          localOp.appendErrorMessage(ERR_MODIFY_MUST_CHANGE_PASSWORD.get());
           break modifyProcessing;
         }
       }
@@ -310,8 +312,7 @@
       {
         localOp.setResultCode(DirectoryServer.getServerErrorResultCode());
         localOp.appendErrorMessage(
-            getMessage(MSGID_MODIFY_CANNOT_LOCK_ENTRY,
-            String.valueOf(entryDN)));
+            ERR_MODIFY_CANNOT_LOCK_ENTRY.get(String.valueOf(entryDN)));
 
         skipPostOperation = true;
         break modifyProcessing;
@@ -342,7 +343,7 @@
           }
 
           localOp.setResultCode(de.getResultCode());
-          localOp.appendErrorMessage(de.getErrorMessage());
+          localOp.appendErrorMessage(de.getMessageObject());
           localOp.setMatchedDN(de.getMatchedDN());
           localOp.setReferralURLs(de.getReferralURLs());
 
@@ -352,8 +353,8 @@
         if (currentEntry == null)
         {
           localOp.setResultCode(ResultCode.NO_SUCH_OBJECT);
-          localOp.appendErrorMessage(getMessage(MSGID_MODIFY_NO_SUCH_ENTRY,
-              String.valueOf(entryDN)));
+          localOp.appendErrorMessage(ERR_MODIFY_NO_SUCH_ENTRY.get(
+                  String.valueOf(entryDN)));
 
           // See if one of the entry's ancestors exists.
           DN parentDN = entryDN.getParentDNInSuffix();
@@ -400,8 +401,9 @@
                      isAllowed(entryDN, localOp, c))
             {
               localOp.setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
-              int msgID = MSGID_CONTROL_INSUFFICIENT_ACCESS_RIGHTS;
-              localOp.appendErrorMessage(getMessage(msgID, oid));
+
+              localOp.appendErrorMessage(
+                      ERR_CONTROL_INSUFFICIENT_ACCESS_RIGHTS.get(oid));
               skipPostOperation = true;
               break modifyProcessing;
             }
@@ -428,7 +430,7 @@
                   }
 
                   localOp.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  localOp.appendErrorMessage(le.getMessage());
+                  localOp.appendErrorMessage(le.getMessageObject());
 
                   break modifyProcessing;
                 }
@@ -444,8 +446,7 @@
                   localOp.setResultCode(ResultCode.ASSERTION_FAILED);
 
                   localOp.appendErrorMessage(
-                      getMessage(MSGID_MODIFY_ASSERTION_FAILED,
-                      String.valueOf(entryDN)));
+                      ERR_MODIFY_ASSERTION_FAILED.get(String.valueOf(entryDN)));
 
                   break modifyProcessing;
                 }
@@ -459,10 +460,10 @@
 
                 localOp.setResultCode(ResultCode.PROTOCOL_ERROR);
 
-                int msgID = MSGID_MODIFY_CANNOT_PROCESS_ASSERTION_FILTER;
-                localOp.appendErrorMessage(getMessage(
-                    msgID, String.valueOf(entryDN),
-                    de.getErrorMessage()));
+                localOp.appendErrorMessage(
+                        ERR_MODIFY_CANNOT_PROCESS_ASSERTION_FILTER.get(
+                                String.valueOf(entryDN),
+                                de.getMessageObject()));
 
                 break modifyProcessing;
               }
@@ -492,7 +493,7 @@
                   }
 
                   localOp.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  localOp.appendErrorMessage(le.getMessage());
+                  localOp.appendErrorMessage(le.getMessageObject());
 
                   break modifyProcessing;
                 }
@@ -519,7 +520,7 @@
                   }
 
                   localOp.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  localOp.appendErrorMessage(le.getMessage());
+                  localOp.appendErrorMessage(le.getMessageObject());
 
                   break modifyProcessing;
                 }
@@ -532,8 +533,8 @@
               if (! clientConnection.hasPrivilege(Privilege.PROXIED_AUTH,
                   localOp))
               {
-                int msgID = MSGID_PROXYAUTH_INSUFFICIENT_PRIVILEGES;
-                localOp.appendErrorMessage(getMessage(msgID));
+                localOp.appendErrorMessage(
+                        ERR_PROXYAUTH_INSUFFICIENT_PRIVILEGES.get());
                 localOp.setResultCode(ResultCode.AUTHORIZATION_DENIED);
                 break modifyProcessing;
               }
@@ -558,7 +559,7 @@
                   }
 
                   localOp.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  localOp.appendErrorMessage(le.getMessage());
+                  localOp.appendErrorMessage(le.getMessageObject());
 
                   break modifyProcessing;
                 }
@@ -578,7 +579,7 @@
                 }
 
                 localOp.setResultCode(de.getResultCode());
-                localOp.appendErrorMessage(de.getErrorMessage());
+                localOp.appendErrorMessage(de.getMessageObject());
 
                 break modifyProcessing;
               }
@@ -600,8 +601,8 @@
               if (! clientConnection.hasPrivilege(Privilege.PROXIED_AUTH,
                   localOp))
               {
-                int msgID = MSGID_PROXYAUTH_INSUFFICIENT_PRIVILEGES;
-                localOp.appendErrorMessage(getMessage(msgID));
+                localOp.appendErrorMessage(
+                        ERR_PROXYAUTH_INSUFFICIENT_PRIVILEGES.get());
                 localOp.setResultCode(ResultCode.AUTHORIZATION_DENIED);
                 break modifyProcessing;
               }
@@ -626,7 +627,7 @@
                   }
 
                   localOp.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  localOp.appendErrorMessage(le.getMessage());
+                  localOp.appendErrorMessage(le.getMessageObject());
 
                   break modifyProcessing;
                 }
@@ -646,7 +647,7 @@
                 }
 
                 localOp.setResultCode(de.getResultCode());
-                localOp.appendErrorMessage(de.getErrorMessage());
+                localOp.appendErrorMessage(de.getMessageObject());
 
                 break modifyProcessing;
               }
@@ -674,10 +675,10 @@
                 localOp.setResultCode(
                     ResultCode.UNAVAILABLE_CRITICAL_EXTENSION);
 
-                int msgID = MSGID_MODIFY_UNSUPPORTED_CRITICAL_CONTROL;
                 localOp.appendErrorMessage(
-                    getMessage(msgID, String.valueOf(entryDN),
-                    oid));
+                    ERR_MODIFY_UNSUPPORTED_CRITICAL_CONTROL.get(
+                            String.valueOf(entryDN),
+                            oid));
 
                 break modifyProcessing;
               }
@@ -704,7 +705,7 @@
           }
 
           localOp.setResultCode(de.getResultCode());
-          localOp.appendErrorMessage(de.getErrorMessage());
+          localOp.appendErrorMessage(de.getMessageObject());
 
           break modifyProcessing;
         }
@@ -737,12 +738,9 @@
                 TRACER.debugCaught(DebugLogLevel.ERROR, de);
               }
 
-              logError(ErrorLogCategory.SYNCHRONIZATION,
-                  ErrorLogSeverity.SEVERE_ERROR,
-                  MSGID_MODIFY_SYNCH_CONFLICT_RESOLUTION_FAILED,
-                  localOp.getConnectionID(),
-                  localOp.getOperationID(),
-                  getExceptionMessage(de));
+              logError(ERR_MODIFY_SYNCH_CONFLICT_RESOLUTION_FAILED.
+                  get(localOp.getConnectionID(), localOp.getOperationID(),
+                      getExceptionMessage(de)));
 
               localOp.setResponseData(de);
               break modifyProcessing;
@@ -793,8 +791,8 @@
                   pwpErrorType =
                        PasswordPolicyErrorType.PASSWORD_MOD_NOT_ALLOWED;
 
-                  int msgID = MSGID_MODIFY_PWRESET_INSUFFICIENT_PRIVILEGES;
-                  localOp.appendErrorMessage(getMessage(msgID));
+                  localOp.appendErrorMessage(
+                          ERR_MODIFY_PWRESET_INSUFFICIENT_PRIVILEGES.get());
                   localOp.setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
                   break modifyProcessing;
                 }
@@ -823,8 +821,7 @@
             {
               localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
               localOp.appendErrorMessage(
-                  getMessage(MSGID_MODIFY_ATTR_IS_NO_USER_MOD,
-                  String.valueOf(entryDN),
+                  ERR_MODIFY_ATTR_IS_NO_USER_MOD.get(String.valueOf(entryDN),
                   a.getName()));
               break modifyProcessing;
             }
@@ -844,8 +841,7 @@
               {
                 localOp.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
                 localOp.appendErrorMessage(
-                    getMessage(MSGID_MODIFY_ATTR_IS_OBSOLETE,
-                    String.valueOf(entryDN),
+                    ERR_MODIFY_ATTR_IS_OBSOLETE.get(String.valueOf(entryDN),
                     a.getName()));
                 break modifyProcessing;
               }
@@ -861,8 +857,9 @@
             if (! clientConnection.hasPrivilege(Privilege.PRIVILEGE_CHANGE,
                 localOp))
             {
-              int msgID = MSGID_MODIFY_CHANGE_PRIVILEGE_INSUFFICIENT_PRIVILEGES;
-              localOp.appendErrorMessage(getMessage(msgID));
+              localOp.appendErrorMessage(
+                      ERR_MODIFY_CHANGE_PRIVILEGE_INSUFFICIENT_PRIVILEGES
+                              .get());
               localOp.setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
               break modifyProcessing;
             }
@@ -885,8 +882,8 @@
               {
                 localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-                int msgID = MSGID_MODIFY_PASSWORDS_CANNOT_HAVE_OPTIONS;
-                localOp.appendErrorMessage(getMessage(msgID));
+                localOp.appendErrorMessage(
+                        ERR_MODIFY_PASSWORDS_CANNOT_HAVE_OPTIONS.get());
                 break modifyProcessing;
               }
 
@@ -899,8 +896,8 @@
 
                 localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-                int msgID = MSGID_MODIFY_NO_USER_PW_CHANGES;
-                localOp.appendErrorMessage(getMessage(msgID));
+                localOp.appendErrorMessage(
+                        ERR_MODIFY_NO_USER_PW_CHANGES.get());
                 break modifyProcessing;
               }
 
@@ -914,8 +911,8 @@
 
                 localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-                int msgID = MSGID_MODIFY_REQUIRE_SECURE_CHANGES;
-                localOp.appendErrorMessage(getMessage(msgID));
+                localOp.appendErrorMessage(
+                        ERR_MODIFY_REQUIRE_SECURE_CHANGES.get());
                 break modifyProcessing;
               }
 
@@ -928,8 +925,7 @@
 
                 localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-                int msgID = MSGID_MODIFY_WITHIN_MINIMUM_AGE;
-                localOp.appendErrorMessage(getMessage(msgID));
+                localOp.appendErrorMessage(ERR_MODIFY_WITHIN_MINIMUM_AGE.get());
                 break modifyProcessing;
               }
             }
@@ -968,8 +964,8 @@
 
                 localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-                int msgID = MSGID_MODIFY_MULTIPLE_VALUES_NOT_ALLOWED;
-                localOp.appendErrorMessage(getMessage(msgID));
+                localOp.appendErrorMessage(
+                        ERR_MODIFY_MULTIPLE_VALUES_NOT_ALLOWED.get());
                 break modifyProcessing;
               }
 
@@ -989,8 +985,8 @@
 
                     localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-                    int msgID = MSGID_MODIFY_NO_PREENCODED_PASSWORDS;
-                    localOp.appendErrorMessage(getMessage(msgID));
+                    localOp.appendErrorMessage(
+                            ERR_MODIFY_NO_PREENCODED_PASSWORDS.get());
                     break modifyProcessing;
                   }
                   else
@@ -1012,8 +1008,8 @@
                       localOp.setResultCode(
                           ResultCode.ATTRIBUTE_OR_VALUE_EXISTS);
 
-                      int msgID = MSGID_MODIFY_PASSWORD_EXISTS;
-                      localOp.appendErrorMessage(getMessage(msgID));
+                      localOp.appendErrorMessage(
+                              ERR_MODIFY_PASSWORD_EXISTS.get());
                       break modifyProcessing;
                     }
                   }
@@ -1045,7 +1041,7 @@
                     }
 
                     localOp.setResultCode(de.getResultCode());
-                    localOp.appendErrorMessage(de.getErrorMessage());
+                    localOp.appendErrorMessage(de.getMessageObject());
                     break modifyProcessing;
                   }
                 }
@@ -1073,8 +1069,8 @@
 
                     localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-                    int msgID = MSGID_MODIFY_NO_PREENCODED_PASSWORDS;
-                    localOp.appendErrorMessage(getMessage(msgID));
+                    localOp.appendErrorMessage(
+                            ERR_MODIFY_NO_PREENCODED_PASSWORDS.get());
                     break modifyProcessing;
                   }
                   else
@@ -1089,8 +1085,8 @@
                   {
                     localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-                    int msgID = MSGID_MODIFY_NO_EXISTING_VALUES;
-                    localOp.appendErrorMessage(getMessage(msgID));
+                    localOp.appendErrorMessage(
+                            ERR_MODIFY_NO_EXISTING_VALUES.get());
                     break modifyProcessing;
                   }
                   boolean found = false;
@@ -1133,9 +1129,9 @@
 
                             localOp.setResultCode(de.getResultCode());
 
-                            int msgID = MSGID_MODIFY_CANNOT_DECODE_PW;
                             localOp.appendErrorMessage(
-                                getMessage(msgID, de.getErrorMessage()));
+                                ERR_MODIFY_CANNOT_DECODE_PW.get(
+                                        de.getMessageObject()));
                             break modifyProcessing;
                           }
                         }
@@ -1181,9 +1177,9 @@
 
                             localOp.setResultCode(de.getResultCode());
 
-                            int msgID = MSGID_MODIFY_CANNOT_DECODE_PW;
-                            localOp.appendErrorMessage(getMessage(msgID,
-                                de.getErrorMessage()));
+                            localOp.appendErrorMessage(
+                                    ERR_MODIFY_CANNOT_DECODE_PW.get(
+                                            de.getMessageObject()));
                             break modifyProcessing;
                           }
                         }
@@ -1216,8 +1212,8 @@
                   {
                     localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-                    int msgID = MSGID_MODIFY_INVALID_PASSWORD;
-                    localOp.appendErrorMessage(getMessage(msgID));
+                    localOp.appendErrorMessage(
+                            ERR_MODIFY_INVALID_PASSWORD.get());
                     break modifyProcessing;
                   }
 
@@ -1232,9 +1228,10 @@
             default:
               localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-            int msgID = MSGID_MODIFY_INVALID_MOD_TYPE_FOR_PASSWORD;
-            localOp.appendErrorMessage(getMessage(msgID,
-                String.valueOf(m.getModificationType()), a.getName()));
+            localOp.appendErrorMessage(
+                    ERR_MODIFY_INVALID_MOD_TYPE_FOR_PASSWORD.get(
+                            String.valueOf(m.getModificationType()),
+                            a.getName()));
 
             break modifyProcessing;
             }
@@ -1260,10 +1257,10 @@
                 {
                   localOp.setResultCode(ResultCode.INVALID_ATTRIBUTE_SYNTAX);
 
-                  int msgID = MSGID_MODIFY_INVALID_DISABLED_VALUE;
-                  String message =
-                    getMessage(msgID, OP_ATTR_ACCOUNT_DISABLED,
-                        String.valueOf(de.getErrorMessage()));
+                  Message message =
+                    ERR_MODIFY_INVALID_DISABLED_VALUE.get(
+                            OP_ATTR_ACCOUNT_DISABLED,
+                            String.valueOf(de.getMessageObject()));
                   localOp.appendErrorMessage(message);
                   break modifyProcessing;
                 }
@@ -1281,9 +1278,9 @@
             if ((newValues == null) || newValues.isEmpty())
             {
               localOp.setResultCode(ResultCode.PROTOCOL_ERROR);
-              localOp.appendErrorMessage(getMessage(MSGID_MODIFY_ADD_NO_VALUES,
-                  String.valueOf(entryDN),
-                  a.getName()));
+              localOp.appendErrorMessage(ERR_MODIFY_ADD_NO_VALUES.get(
+                      String.valueOf(entryDN),
+                      a.getName()));
               break modifyProcessing;
             }
 
@@ -1300,8 +1297,8 @@
 
               if (syntaxPolicy == AcceptRejectWarn.REJECT)
               {
-                StringBuilder invalidReason =
-                  new StringBuilder();
+                MessageBuilder invalidReason =
+                  new MessageBuilder();
 
                 for (AttributeValue v : newValues)
                 {
@@ -1309,12 +1306,12 @@
                   {
                     localOp.setResultCode(ResultCode.INVALID_ATTRIBUTE_SYNTAX);
 
-                    int msgID = MSGID_MODIFY_ADD_INVALID_SYNTAX;
-                    localOp.appendErrorMessage(getMessage(msgID,
-                        String.valueOf(entryDN),
-                        a.getName(),
-                        v.getStringValue(),
-                        invalidReason.toString()));
+
+                    localOp.appendErrorMessage(ERR_MODIFY_ADD_INVALID_SYNTAX
+                            .get(String.valueOf(entryDN),
+                                 a.getName(),
+                                 v.getStringValue(),
+                                 invalidReason.toString()));
 
                     break modifyProcessing;
                   }
@@ -1322,7 +1319,7 @@
               }
               else if (syntaxPolicy == AcceptRejectWarn.WARN)
               {
-                StringBuilder invalidReason = new StringBuilder();
+                MessageBuilder invalidReason = new MessageBuilder();
 
                 for (AttributeValue v : newValues)
                 {
@@ -1331,13 +1328,12 @@
                     localOp.setResultCode(
                         ResultCode.INVALID_ATTRIBUTE_SYNTAX);
 
-                    int msgID = MSGID_MODIFY_ADD_INVALID_SYNTAX;
-                    logError(ErrorLogCategory.SCHEMA,
-                        ErrorLogSeverity.SEVERE_WARNING, msgID,
-                        String.valueOf(entryDN), a.getName(),
-                        v.getStringValue(), invalidReason.toString());
+                    logError(
+                          ERR_MODIFY_ADD_INVALID_SYNTAX.
+                            get(String.valueOf(entryDN), a.getName(),
+                                v.getStringValue(), invalidReason.toString()));
 
-                    invalidReason = new StringBuilder();
+                    invalidReason = new MessageBuilder();
                   }
                 }
               }
@@ -1388,9 +1384,8 @@
 
                 localOp.setResultCode(ResultCode.ATTRIBUTE_OR_VALUE_EXISTS);
 
-                int msgID = MSGID_MODIFY_ADD_DUPLICATE_VALUE;
                 localOp.appendErrorMessage(
-                    getMessage(msgID, String.valueOf(entryDN),
+                    ERR_MODIFY_ADD_DUPLICATE_VALUE.get(String.valueOf(entryDN),
                     a.getName(),
                     buffer.toString()));
 
@@ -1420,9 +1415,8 @@
                 {
                   localOp.setResultCode(ResultCode.NOT_ALLOWED_ON_RDN);
 
-                  int msgID = MSGID_MODIFY_DELETE_RDN_ATTR;
-                  localOp.appendErrorMessage(getMessage(msgID,
-                      String.valueOf(entryDN),
+                  localOp.appendErrorMessage(ERR_MODIFY_DELETE_RDN_ATTR.get(
+                          String.valueOf(entryDN),
                       a.getName()));
                   break modifyProcessing;
                 }
@@ -1442,9 +1436,9 @@
 
                 localOp.setResultCode(ResultCode.NO_SUCH_ATTRIBUTE);
 
-                int msgID = MSGID_MODIFY_DELETE_MISSING_VALUES;
                 localOp.appendErrorMessage(
-                    getMessage(msgID, String.valueOf(entryDN),
+                    ERR_MODIFY_DELETE_MISSING_VALUES.get(
+                            String.valueOf(entryDN),
                     a.getName(),
                     buffer.toString()));
 
@@ -1455,9 +1449,8 @@
             {
               localOp.setResultCode(ResultCode.NO_SUCH_ATTRIBUTE);
 
-              int msgID = MSGID_MODIFY_DELETE_NO_SUCH_ATTR;
               localOp.appendErrorMessage(
-                  getMessage(msgID, String.valueOf(entryDN),
+                  ERR_MODIFY_DELETE_NO_SUCH_ATTR.get(String.valueOf(entryDN),
                   a.getName()));
               break modifyProcessing;
             }
@@ -1497,9 +1490,8 @@
               {
                 localOp.setResultCode(ResultCode.NOT_ALLOWED_ON_RDN);
 
-                int msgID = MSGID_MODIFY_DELETE_RDN_ATTR;
                 localOp.appendErrorMessage(
-                    getMessage(msgID, String.valueOf(entryDN),
+                    ERR_MODIFY_DELETE_RDN_ATTR.get(String.valueOf(entryDN),
                     a.getName()));
                 break modifyProcessing;
               }
@@ -1520,7 +1512,7 @@
 
               if (syntaxPolicy == AcceptRejectWarn.REJECT)
               {
-                StringBuilder invalidReason = new StringBuilder();
+                MessageBuilder invalidReason = new MessageBuilder();
 
                 for (AttributeValue v : newValues)
                 {
@@ -1528,9 +1520,9 @@
                   {
                     localOp.setResultCode(ResultCode.INVALID_ATTRIBUTE_SYNTAX);
 
-                    int msgID = MSGID_MODIFY_REPLACE_INVALID_SYNTAX;
-                    localOp.appendErrorMessage(getMessage(msgID,
-                        String.valueOf(entryDN),
+                    localOp.appendErrorMessage(
+                            ERR_MODIFY_REPLACE_INVALID_SYNTAX.get(
+                                    String.valueOf(entryDN),
                         a.getName(),
                         v.getStringValue(),
                         invalidReason.toString()));
@@ -1541,21 +1533,19 @@
               }
               else if (syntaxPolicy == AcceptRejectWarn.WARN)
               {
-                StringBuilder invalidReason = new StringBuilder();
-
+                MessageBuilder invalidReason = new MessageBuilder();
                 for (AttributeValue v : newValues)
                 {
                   if (! syntax.valueIsAcceptable(v.getValue(), invalidReason))
                   {
                     localOp.setResultCode(ResultCode.INVALID_ATTRIBUTE_SYNTAX);
 
-                    int msgID = MSGID_MODIFY_REPLACE_INVALID_SYNTAX;
-                    logError(ErrorLogCategory.SCHEMA,
-                        ErrorLogSeverity.SEVERE_WARNING, msgID,
-                        String.valueOf(entryDN), a.getName(),
-                        v.getStringValue(), invalidReason.toString());
+                    logError(
+                          ERR_MODIFY_REPLACE_INVALID_SYNTAX.
+                            get(String.valueOf(entryDN), a.getName(),
+                                v.getStringValue(), invalidReason.toString()));
 
-                    invalidReason = new StringBuilder();
+                    invalidReason = new MessageBuilder();
                   }
                 }
               }
@@ -1578,9 +1568,8 @@
               {
                 localOp.setResultCode(ResultCode.NOT_ALLOWED_ON_RDN);
 
-                int msgID = MSGID_MODIFY_DELETE_RDN_ATTR;
                 localOp.appendErrorMessage(
-                    getMessage(msgID, String.valueOf(entryDN),
+                    ERR_MODIFY_DELETE_RDN_ATTR.get(String.valueOf(entryDN),
                     a.getName()));
                 break modifyProcessing;
               }
@@ -1604,9 +1593,8 @@
               {
                 localOp.setResultCode(ResultCode.NOT_ALLOWED_ON_RDN);
 
-                int msgID = MSGID_MODIFY_DELETE_RDN_ATTR;
                 localOp.appendErrorMessage(
-                    getMessage(msgID, String.valueOf(entryDN),
+                    ERR_MODIFY_DELETE_RDN_ATTR.get(String.valueOf(entryDN),
                     a.getName()));
                 break modifyProcessing;
               }
@@ -1640,9 +1628,8 @@
             {
               localOp.setResultCode(ResultCode.NOT_ALLOWED_ON_RDN);
 
-              int msgID = MSGID_MODIFY_DELETE_RDN_ATTR;
               localOp.appendErrorMessage(
-                  getMessage(msgID, String.valueOf(entryDN),
+                  ERR_MODIFY_DELETE_RDN_ATTR.get(String.valueOf(entryDN),
                   a.getName()));
               break modifyProcessing;
             }
@@ -1655,8 +1642,8 @@
             if ((rdn !=  null) && rdn.hasAttributeType(t))
             {
               localOp.setResultCode(ResultCode.NOT_ALLOWED_ON_RDN);
-              localOp.appendErrorMessage(getMessage(MSGID_MODIFY_INCREMENT_RDN,
-                  String.valueOf(entryDN),
+              localOp.appendErrorMessage(ERR_MODIFY_INCREMENT_RDN.get(
+                      String.valueOf(entryDN),
                   a.getName()));
             }
 
@@ -1668,9 +1655,9 @@
             {
               localOp.setResultCode(ResultCode.PROTOCOL_ERROR);
 
-              int msgID = MSGID_MODIFY_INCREMENT_REQUIRES_VALUE;
               localOp.appendErrorMessage(
-                  getMessage(msgID, String.valueOf(entryDN),
+                  ERR_MODIFY_INCREMENT_REQUIRES_VALUE.get(
+                          String.valueOf(entryDN),
                   a.getName()));
 
               break modifyProcessing;
@@ -1679,9 +1666,9 @@
             {
               localOp.setResultCode(ResultCode.PROTOCOL_ERROR);
 
-              int msgID = MSGID_MODIFY_INCREMENT_REQUIRES_SINGLE_VALUE;
               localOp.appendErrorMessage(
-                  getMessage(msgID, String.valueOf(entryDN),
+                  ERR_MODIFY_INCREMENT_REQUIRES_SINGLE_VALUE.get(
+                          String.valueOf(entryDN),
                   a.getName()));
               break modifyProcessing;
             }
@@ -1702,9 +1689,9 @@
 
               localOp.setResultCode(ResultCode.INVALID_ATTRIBUTE_SYNTAX);
 
-              int msgID = MSGID_MODIFY_INCREMENT_PROVIDED_VALUE_NOT_INTEGER;
               localOp.appendErrorMessage(
-                  getMessage(msgID, String.valueOf(entryDN),
+                  ERR_MODIFY_INCREMENT_PROVIDED_VALUE_NOT_INTEGER.get(
+                          String.valueOf(entryDN),
                   a.getName(), v.getStringValue()));
 
               break modifyProcessing;
@@ -1718,9 +1705,9 @@
             {
               localOp.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
 
-              int msgID = MSGID_MODIFY_INCREMENT_REQUIRES_EXISTING_VALUE;
               localOp.appendErrorMessage(
-                  getMessage(msgID, String.valueOf(entryDN),
+                  ERR_MODIFY_INCREMENT_REQUIRES_EXISTING_VALUE.get(
+                          String.valueOf(entryDN),
                   a.getName()));
 
               break modifyProcessing;
@@ -1755,9 +1742,9 @@
 
                   localOp.setResultCode(ResultCode.INVALID_ATTRIBUTE_SYNTAX);
 
-                  int msgID = MSGID_MODIFY_INCREMENT_REQUIRES_INTEGER_VALUE;
-                  localOp.appendErrorMessage(getMessage(msgID,
-                      String.valueOf(entryDN),
+                  localOp.appendErrorMessage(
+                          ERR_MODIFY_INCREMENT_REQUIRES_INTEGER_VALUE.get(
+                                  String.valueOf(entryDN),
                       a.getName(),
                       existingValue.getStringValue()));
                   break modifyProcessing;
@@ -1776,10 +1763,10 @@
             {
               localOp.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
 
-              int msgID = MSGID_MODIFY_INCREMENT_REQUIRES_EXISTING_VALUE;
               localOp.appendErrorMessage(
-                  getMessage(msgID, String.valueOf(entryDN),
-                  a.getName()));
+                  ERR_MODIFY_INCREMENT_REQUIRES_EXISTING_VALUE.get(
+                          String.valueOf(entryDN),
+                          a.getName()));
 
               break modifyProcessing;
             }
@@ -1805,8 +1792,8 @@
 
             localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-            int msgID = MSGID_MODIFY_PW_CHANGE_REQUIRES_CURRENT_PW;
-            localOp.appendErrorMessage(getMessage(msgID));
+            localOp.appendErrorMessage(
+                    ERR_MODIFY_PW_CHANGE_REQUIRES_CURRENT_PW.get());
             break modifyProcessing;
           }
 
@@ -1820,8 +1807,8 @@
 
             localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-            int msgID = MSGID_MODIFY_MULTIPLE_PASSWORDS_NOT_ALLOWED;
-            localOp.appendErrorMessage(getMessage(msgID));
+            localOp.appendErrorMessage(
+                    ERR_MODIFY_MULTIPLE_PASSWORDS_NOT_ALLOWED.get());
             break modifyProcessing;
           }
 
@@ -1881,7 +1868,7 @@
 
               for (AttributeValue v : newPasswords)
               {
-                StringBuilder invalidReason = new StringBuilder();
+                MessageBuilder invalidReason = new MessageBuilder();
                 if (! pwPolicyState.passwordIsAcceptable(localOp, modifiedEntry,
                     v.getValue(),
                     clearPasswords,
@@ -1892,9 +1879,8 @@
 
                   localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-                  int msgID = MSGID_MODIFY_PW_VALIDATION_FAILED;
-                  localOp.appendErrorMessage(getMessage(msgID,
-                      invalidReason.toString()));
+                  localOp.appendErrorMessage(ERR_MODIFY_PW_VALIDATION_FAILED
+                          .get(invalidReason.toString()));
                   break modifyProcessing;
                 }
               }
@@ -1919,8 +1905,7 @@
 
                     localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-                    int msgID = MSGID_MODIFY_PW_IN_HISTORY;
-                    localOp.appendErrorMessage(getMessage(msgID));
+                    localOp.appendErrorMessage(ERR_MODIFY_PW_IN_HISTORY.get());
                     break modifyProcessing;
                   }
                 }
@@ -1947,9 +1932,9 @@
             .getAccessControlHandler().isAllowed(localOp)) {
           localOp.setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
 
-          int msgID = MSGID_MODIFY_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS;
           localOp.appendErrorMessage(
-              getMessage(msgID, String.valueOf(entryDN)));
+              ERR_MODIFY_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS.get(
+                      String.valueOf(entryDN)));
 
           skipPostOperation = true;
           break modifyProcessing;
@@ -2017,8 +2002,7 @@
 
             localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-            int msgID = MSGID_MODIFY_MUST_CHANGE_PASSWORD;
-            localOp.appendErrorMessage(getMessage(msgID));
+            localOp.appendErrorMessage(ERR_MODIFY_MUST_CHANGE_PASSWORD.get());
             break modifyProcessing;
         }
 
@@ -2028,14 +2012,14 @@
         if ((DirectoryServer.checkSchema()) &&
             (!localOp.isSynchronizationOperation()) )
         {
-          StringBuilder invalidReason = new StringBuilder();
+          MessageBuilder invalidReason = new MessageBuilder();
           if (! modifiedEntry.conformsToSchema(null, false, false, false,
               invalidReason))
           {
             localOp.setResultCode(ResultCode.OBJECTCLASS_VIOLATION);
-            localOp.appendErrorMessage(getMessage(MSGID_MODIFY_VIOLATES_SCHEMA,
-                String.valueOf(entryDN),
-                invalidReason.toString()));
+            localOp.appendErrorMessage(ERR_MODIFY_VIOLATES_SCHEMA.get(
+                    String.valueOf(entryDN),
+                    invalidReason.toString()));
             break modifyProcessing;
           }
         }
@@ -2059,8 +2043,7 @@
             // and return.
             localOp.setResultCode(ResultCode.CANCELED);
 
-            int msgID = MSGID_CANCELED_BY_PREOP_DISCONNECT;
-            localOp.appendErrorMessage(getMessage(msgID));
+            localOp.appendErrorMessage(ERR_CANCELED_BY_PREOP_DISCONNECT.get());
 
             localOp.setProcessingStopTime();
 
@@ -2092,8 +2075,7 @@
         {
           localOp.setResultCode(ResultCode.NO_SUCH_OBJECT);
           localOp.appendErrorMessage(
-              getMessage(MSGID_MODIFY_NO_BACKEND_FOR_ENTRY,
-              String.valueOf(entryDN)));
+              ERR_MODIFY_NO_BACKEND_FOR_ENTRY.get(String.valueOf(entryDN)));
           break modifyProcessing;
         }
 
@@ -2108,8 +2090,7 @@
             case DISABLED:
               localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
               localOp.appendErrorMessage(
-                  getMessage(MSGID_MODIFY_SERVER_READONLY,
-                  String.valueOf(entryDN)));
+                  ERR_MODIFY_SERVER_READONLY.get(String.valueOf(entryDN)));
               break modifyProcessing;
 
             case INTERNAL_ONLY:
@@ -2118,8 +2099,7 @@
               {
                 localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
                 localOp.appendErrorMessage(
-                    getMessage(MSGID_MODIFY_SERVER_READONLY,
-                    String.valueOf(entryDN)));
+                    ERR_MODIFY_SERVER_READONLY.get(String.valueOf(entryDN)));
                 break modifyProcessing;
               }
             }
@@ -2129,8 +2109,7 @@
             case DISABLED:
               localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
               localOp.appendErrorMessage(
-                  getMessage(MSGID_MODIFY_BACKEND_READONLY,
-                  String.valueOf(entryDN)));
+                  ERR_MODIFY_BACKEND_READONLY.get(String.valueOf(entryDN)));
               break modifyProcessing;
 
             case INTERNAL_ONLY:
@@ -2139,8 +2118,7 @@
               {
                 localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
                 localOp.appendErrorMessage(
-                    getMessage(MSGID_MODIFY_BACKEND_READONLY,
-                    String.valueOf(entryDN)));
+                    ERR_MODIFY_BACKEND_READONLY.get(String.valueOf(entryDN)));
                 break modifyProcessing;
               }
             }
@@ -2149,7 +2127,7 @@
 
           if (noOp)
           {
-            localOp.appendErrorMessage(getMessage(MSGID_MODIFY_NOOP));
+            localOp.appendErrorMessage(INFO_MODIFY_NOOP.get());
 
             localOp.setResultCode(ResultCode.NO_OPERATION);
           }
@@ -2174,12 +2152,9 @@
                   TRACER.debugCaught(DebugLogLevel.ERROR, de);
                 }
 
-                logError(ErrorLogCategory.SYNCHRONIZATION,
-                    ErrorLogSeverity.SEVERE_ERROR,
-                    MSGID_MODIFY_SYNCH_PREOP_FAILED,
-                    localOp.getConnectionID(),
-                    localOp.getOperationID(),
-                    getExceptionMessage(de));
+                logError(ERR_MODIFY_SYNCH_PREOP_FAILED.
+                    get(localOp.getConnectionID(), localOp.getOperationID(),
+                        getExceptionMessage(de)));
 
                 localOp.setResponseData(de);
                 break modifyProcessing;
@@ -2203,19 +2178,17 @@
                   clientConnection.setMustChangePassword(false);
                 }
 
-                int    msgID   = MSGID_MODIFY_PASSWORD_CHANGED;
-                String message = getMessage(msgID);
+                Message message = INFO_MODIFY_PASSWORD_CHANGED.get();
                 pwPolicyState.generateAccountStatusNotification(
                     AccountStatusNotificationType.PASSWORD_CHANGED, entryDN,
-                    msgID, message);
+                    message);
               }
               else
               {
-                int    msgID   = MSGID_MODIFY_PASSWORD_RESET;
-                String message = getMessage(msgID);
+                Message message = INFO_MODIFY_PASSWORD_RESET.get();
                 pwPolicyState.generateAccountStatusNotification(
                     AccountStatusNotificationType.PASSWORD_RESET, entryDN,
-                    msgID, message);
+                    message);
               }
             }
 
@@ -2223,29 +2196,26 @@
             {
               if (isEnabled)
               {
-                int    msgID   = MSGID_MODIFY_ACCOUNT_ENABLED;
-                String message = getMessage(msgID);
+                Message message = INFO_MODIFY_ACCOUNT_ENABLED.get();
                 pwPolicyState.generateAccountStatusNotification(
                     AccountStatusNotificationType.ACCOUNT_ENABLED, entryDN,
-                    msgID, message);
+                    message);
               }
               else
               {
-                int    msgID   = MSGID_MODIFY_ACCOUNT_DISABLED;
-                String message = getMessage(msgID);
+                Message message = INFO_MODIFY_ACCOUNT_DISABLED.get();
                 pwPolicyState.generateAccountStatusNotification(
                     AccountStatusNotificationType.ACCOUNT_DISABLED, entryDN,
-                    msgID, message);
+                    message);
               }
             }
 
             if (wasLocked)
             {
-              int    msgID   = MSGID_MODIFY_ACCOUNT_UNLOCKED;
-              String message = getMessage(msgID);
+              Message message = INFO_MODIFY_ACCOUNT_UNLOCKED.get();
               pwPolicyState.generateAccountStatusNotification(
                   AccountStatusNotificationType.ACCOUNT_UNLOCKED, entryDN,
-                  msgID, message);
+                  message);
             }
           }
 
@@ -2364,7 +2334,7 @@
           }
 
           localOp.setResultCode(de.getResultCode());
-          localOp.appendErrorMessage(de.getErrorMessage());
+          localOp.appendErrorMessage(de.getMessageObject());
           localOp.setMatchedDN(de.getMatchedDN());
           localOp.setReferralURLs(de.getReferralURLs());
 
@@ -2382,7 +2352,7 @@
           localOp.setCancelResult(cancelResult);
           localOp.setResultCode(cancelResult.getResultCode());
 
-          String message = coe.getMessage();
+          Message message = coe.getMessageObject();
           if ((message != null) && (message.length() > 0))
           {
             localOp.appendErrorMessage(message);
@@ -2409,10 +2379,9 @@
               TRACER.debugCaught(DebugLogLevel.ERROR, de);
             }
 
-            logError(ErrorLogCategory.SYNCHRONIZATION,
-                ErrorLogSeverity.SEVERE_ERROR,
-                MSGID_MODIFY_SYNCH_POSTOP_FAILED, localOp.getConnectionID(),
-                localOp.getOperationID(), getExceptionMessage(de));
+            logError(ERR_MODIFY_SYNCH_POSTOP_FAILED.
+                get(localOp.getConnectionID(), localOp.getOperationID(),
+                    getExceptionMessage(de)));
 
             localOp.setResponseData(de);
             break;
@@ -2446,8 +2415,7 @@
         // return.
         localOp.setResultCode(ResultCode.CANCELED);
 
-        int msgID = MSGID_CANCELED_BY_PREOP_DISCONNECT;
-        localOp.appendErrorMessage(getMessage(msgID));
+        localOp.appendErrorMessage(ERR_CANCELED_BY_PREOP_DISCONNECT.get());
 
         localOp.setProcessingStopTime();
 
@@ -2475,10 +2443,9 @@
             TRACER.debugCaught(DebugLogLevel.ERROR, e);
           }
 
-          int    msgID   = MSGID_MODIFY_ERROR_NOTIFYING_CHANGE_LISTENER;
-          String message = getMessage(msgID, getExceptionMessage(e));
-          logError(ErrorLogCategory.CORE_SERVER, ErrorLogSeverity.SEVERE_ERROR,
-                   message, msgID);
+          Message message = ERR_MODIFY_ERROR_NOTIFYING_CHANGE_LISTENER.get(
+              getExceptionMessage(e));
+          logError(message);
         }
       }
     }
@@ -2539,8 +2506,9 @@
                   isAllowed(baseDN, localOp, c))
           {
             localOp.setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
-            int msgID = MSGID_CONTROL_INSUFFICIENT_ACCESS_RIGHTS;
-            localOp.appendErrorMessage(getMessage(msgID, oid));
+
+            localOp.appendErrorMessage(
+                    ERR_CONTROL_INSUFFICIENT_ACCESS_RIGHTS.get(oid));
             skipPostOperation = true;
             break searchProcessing;
           }
@@ -2568,7 +2536,7 @@
 
                 localOp.setResultCode(
                     ResultCode.valueOf(le.getResultCode()));
-                localOp.appendErrorMessage(le.getMessage());
+                localOp.appendErrorMessage(le.getMessageObject());
 
                 break searchProcessing;
               }
@@ -2593,9 +2561,9 @@
 
                 localOp.setResultCode(de.getResultCode());
 
-                int msgID = MSGID_SEARCH_CANNOT_GET_ENTRY_FOR_ASSERTION;
                 localOp.appendErrorMessage(
-                    getMessage(msgID, de.getErrorMessage()));
+                    ERR_SEARCH_CANNOT_GET_ENTRY_FOR_ASSERTION.get(
+                            de.getMessageObject()));
 
                 break searchProcessing;
               }
@@ -2604,8 +2572,8 @@
               {
                 localOp.setResultCode(ResultCode.NO_SUCH_OBJECT);
 
-                int msgID = MSGID_SEARCH_NO_SUCH_ENTRY_FOR_ASSERTION;
-                localOp.appendErrorMessage(getMessage(msgID));
+                localOp.appendErrorMessage(
+                    ERR_SEARCH_NO_SUCH_ENTRY_FOR_ASSERTION.get());
 
                 break searchProcessing;
               }
@@ -2616,7 +2584,7 @@
                 localOp.setResultCode(ResultCode.ASSERTION_FAILED);
 
                 localOp.appendErrorMessage(
-                    getMessage(MSGID_SEARCH_ASSERTION_FAILED));
+                    ERR_SEARCH_ASSERTION_FAILED.get());
 
                 break searchProcessing;
               }
@@ -2630,9 +2598,9 @@
 
               localOp.setResultCode(ResultCode.PROTOCOL_ERROR);
 
-              int msgID = MSGID_SEARCH_CANNOT_PROCESS_ASSERTION_FILTER;
               localOp.appendErrorMessage(
-                  getMessage(msgID, de.getErrorMessage()));
+                  ERR_SEARCH_CANNOT_PROCESS_ASSERTION_FILTER.get(
+                          de.getMessageObject()));
 
               break searchProcessing;
             }
@@ -2644,8 +2612,8 @@
             if (! clientConnection.hasPrivilege(
                 Privilege.PROXIED_AUTH, localOp))
             {
-              int msgID = MSGID_PROXYAUTH_INSUFFICIENT_PRIVILEGES;
-              localOp.appendErrorMessage(getMessage(msgID));
+              localOp.appendErrorMessage(
+                      ERR_PROXYAUTH_INSUFFICIENT_PRIVILEGES.get());
               localOp.setResultCode(ResultCode.AUTHORIZATION_DENIED);
               break searchProcessing;
             }
@@ -2671,7 +2639,7 @@
 
                 localOp.setResultCode(
                     ResultCode.valueOf(le.getResultCode()));
-                localOp.appendErrorMessage(le.getMessage());
+                localOp.appendErrorMessage(le.getMessageObject());
 
                 break searchProcessing;
               }
@@ -2691,7 +2659,7 @@
               }
 
               localOp.setResultCode(de.getResultCode());
-              localOp.appendErrorMessage(de.getErrorMessage());
+              localOp.appendErrorMessage(de.getMessageObject());
 
               break searchProcessing;
             }
@@ -2713,8 +2681,8 @@
             if (! clientConnection.hasPrivilege(
                 Privilege.PROXIED_AUTH, localOp))
             {
-              int msgID = MSGID_PROXYAUTH_INSUFFICIENT_PRIVILEGES;
-              localOp.appendErrorMessage(getMessage(msgID));
+              localOp.appendErrorMessage(
+                      ERR_PROXYAUTH_INSUFFICIENT_PRIVILEGES.get());
               localOp.setResultCode(ResultCode.AUTHORIZATION_DENIED);
               break searchProcessing;
             }
@@ -2740,7 +2708,7 @@
 
                 localOp.setResultCode(
                     ResultCode.valueOf(le.getResultCode()));
-                localOp.appendErrorMessage(le.getMessage());
+                localOp.appendErrorMessage(le.getMessageObject());
 
                 break searchProcessing;
               }
@@ -2760,7 +2728,7 @@
               }
 
               localOp.setResultCode(de.getResultCode());
-              localOp.appendErrorMessage(de.getErrorMessage());
+              localOp.appendErrorMessage(de.getMessageObject());
 
               break searchProcessing;
             }
@@ -2797,7 +2765,7 @@
 
                 localOp.setResultCode(
                     ResultCode.valueOf(le.getResultCode()));
-                localOp.appendErrorMessage(le.getMessage());
+                localOp.appendErrorMessage(le.getMessageObject());
 
                 break searchProcessing;
               }
@@ -2842,7 +2810,7 @@
 
                 localOp.setResultCode(
                     ResultCode.valueOf(le.getResultCode()));
-                localOp.appendErrorMessage(le.getMessage());
+                localOp.appendErrorMessage(le.getMessageObject());
 
                 break searchProcessing;
               }
@@ -2868,8 +2836,8 @@
               localOp.setResultCode(
                   ResultCode.UNAVAILABLE_CRITICAL_EXTENSION);
 
-              int msgID = MSGID_SEARCH_UNSUPPORTED_CRITICAL_CONTROL;
-              localOp.appendErrorMessage(getMessage(msgID, oid));
+              localOp.appendErrorMessage(
+                      ERR_SEARCH_UNSUPPORTED_CRITICAL_CONTROL.get(oid));
 
               break searchProcessing;
             }
@@ -2888,9 +2856,9 @@
           .getAccessControlHandler().isAllowed(localOp) == false) {
         localOp.setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
 
-        int msgID = MSGID_SEARCH_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS;
         localOp.appendErrorMessage(
-            getMessage(msgID, String.valueOf(baseDN)));
+            ERR_SEARCH_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS.get(
+                    String.valueOf(baseDN)));
 
         skipPostOperation = true;
         break searchProcessing;
@@ -2912,8 +2880,7 @@
         // result and return.
         localOp.setResultCode(ResultCode.CANCELED);
 
-        int msgID = MSGID_CANCELED_BY_PREOP_DISCONNECT;
-        localOp.appendErrorMessage(getMessage(msgID));
+        localOp.appendErrorMessage(ERR_CANCELED_BY_PREOP_DISCONNECT.get());
 
         localOp.setProcessingStopTime();
         return;
@@ -2943,8 +2910,7 @@
       {
         localOp.setResultCode(ResultCode.NO_SUCH_OBJECT);
         localOp.appendErrorMessage(
-            getMessage(MSGID_SEARCH_BASE_DOESNT_EXIST,
-            String.valueOf(baseDN)));
+            ERR_SEARCH_BASE_DOESNT_EXIST.get(String.valueOf(baseDN)));
         break searchProcessing;
       }
 
@@ -2978,7 +2944,7 @@
         }
 
         localOp.setResultCode(de.getResultCode());
-        localOp.appendErrorMessage(de.getErrorMessage());
+        localOp.appendErrorMessage(de.getMessageObject());
         localOp.setMatchedDN(de.getMatchedDN());
         localOp.setReferralURLs(de.getReferralURLs());
 
@@ -3002,7 +2968,7 @@
         localOp.setCancelResult(cancelResult);
         localOp.setResultCode(cancelResult.getResultCode());
 
-        String message = coe.getMessage();
+        Message message = coe.getMessageObject();
         if ((message != null) && (message.length() > 0))
         {
           localOp.appendErrorMessage(message);
@@ -3027,9 +2993,8 @@
         localOp.setResultCode(
             DirectoryServer.getServerErrorResultCode());
 
-        int msgID = MSGID_SEARCH_BACKEND_EXCEPTION;
         localOp.appendErrorMessage(
-            getMessage(msgID, getExceptionMessage(e)));
+            ERR_SEARCH_BACKEND_EXCEPTION.get(getExceptionMessage(e)));
 
         if (persistentSearch != null)
         {
@@ -3059,8 +3024,7 @@
       {
         localOp.setResultCode(ResultCode.CANCELED);
 
-        int msgID = MSGID_CANCELED_BY_POSTOP_DISCONNECT;
-        localOp.appendErrorMessage(getMessage(msgID));
+        localOp.appendErrorMessage(ERR_CANCELED_BY_POSTOP_DISCONNECT.get());
 
         localOp.setProcessingStopTime();
         return;
@@ -3158,9 +3122,9 @@
           .getAccessControlHandler().isAllowed(localOp) == false) {
         localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
 
-        int    msgID   = MSGID_BIND_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS;
-        String message = getMessage(msgID, String.valueOf(bindDN));
-        localOp.setAuthFailureReason(msgID, message);
+        Message message = ERR_BIND_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS.get(
+                String.valueOf(bindDN));
+        localOp.setAuthFailureReason(message);
 
         skipPostOperation = true;
         break bindProcessing;
@@ -3180,8 +3144,8 @@
                   getAccessControlHandler(). isAllowed(bindDN, localOp, c))
           {
             localOp.setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
-            int msgID = MSGID_CONTROL_INSUFFICIENT_ACCESS_RIGHTS;
-            localOp.appendErrorMessage(getMessage(msgID, oid));
+            localOp.appendErrorMessage(ERR_CONTROL_INSUFFICIENT_ACCESS_RIGHTS
+                    .get(oid));
             skipPostOperation = true;
             break bindProcessing;
           }
@@ -3200,8 +3164,8 @@
           {
             localOp.setResultCode(ResultCode.UNAVAILABLE_CRITICAL_EXTENSION);
 
-            int msgID = MSGID_BIND_UNSUPPORTED_CRITICAL_CONTROL;
-            localOp.appendErrorMessage(getMessage(msgID, String.valueOf(oid)));
+            localOp.appendErrorMessage(ERR_BIND_UNSUPPORTED_CRITICAL_CONTROL
+                    .get(String.valueOf(oid)));
 
             break bindProcessing;
           }
@@ -3225,8 +3189,8 @@
             {
               localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
 
-              int msgID = MSGID_BIND_REJECTED_LOCKDOWN_MODE;
-              localOp.setAuthFailureReason(msgID, getMessage(msgID));
+              Message message = ERR_BIND_REJECTED_LOCKDOWN_MODE.get();
+              localOp.setAuthFailureReason(message);
 
               localOp.setProcessingStopTime();
               logBindResponse(localOp);
@@ -3239,9 +3203,8 @@
             {
               localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-              int    msgID   = MSGID_BIND_DN_BUT_NO_PASSWORD;
-              String message = getMessage(msgID);
-              localOp.setAuthFailureReason(msgID, message);
+              Message message = ERR_BIND_DN_BUT_NO_PASSWORD.get();
+              localOp.setAuthFailureReason(message);
               break bindProcessing;
             }
 
@@ -3255,8 +3218,8 @@
               // and return.
               localOp.setResultCode(ResultCode.CANCELED);
 
-              int msgID = MSGID_CANCELED_BY_PREOP_DISCONNECT;
-              localOp.appendErrorMessage(getMessage(msgID));
+              localOp.appendErrorMessage(
+                      ERR_CANCELED_BY_PREOP_DISCONNECT.get());
 
               return;
             }
@@ -3299,11 +3262,11 @@
 
           if (userLock == null)
           {
-            int    msgID   = MSGID_BIND_OPERATION_CANNOT_LOCK_USER;
-            String message = getMessage(msgID, String.valueOf(bindDN));
+            Message message = ERR_BIND_OPERATION_CANNOT_LOCK_USER.get(
+                    String.valueOf(bindDN));
 
             localOp.setResultCode(DirectoryServer.getServerErrorResultCode());
-            localOp.setAuthFailureReason(msgID, message);
+            localOp.setAuthFailureReason(message);
             break bindProcessing;
           }
 
@@ -3322,8 +3285,7 @@
               }
 
               localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
-              localOp.setAuthFailureReason(de.getMessageID(),
-                                   de.getErrorMessage());
+              localOp.setAuthFailureReason(de.getMessageObject());
 
               userEntry = null;
               break bindProcessing;
@@ -3332,11 +3294,11 @@
             if (userEntry == null)
             {
 
-              int    msgID   = MSGID_BIND_OPERATION_UNKNOWN_USER;
-              String message = getMessage(msgID, String.valueOf(bindDN));
+              Message message = ERR_BIND_OPERATION_UNKNOWN_USER.get(
+                      String.valueOf(bindDN));
 
               localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
-              localOp.setAuthFailureReason(msgID, message);
+              localOp.setAuthFailureReason(message);
               break bindProcessing;
             }
             else
@@ -3354,11 +3316,11 @@
             List<Attribute> pwAttr = userEntry.getAttribute(pwType);
             if ((pwAttr == null) || (pwAttr.isEmpty()))
             {
-              int    msgID   = MSGID_BIND_OPERATION_NO_PASSWORD;
-              String message = getMessage(msgID, String.valueOf(bindDN));
+              Message message = ERR_BIND_OPERATION_NO_PASSWORD.get(
+                      String.valueOf(bindDN));
 
               localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
-              localOp.setAuthFailureReason(msgID, message);
+              localOp.setAuthFailureReason(message);
               break bindProcessing;
             }
 
@@ -3379,11 +3341,11 @@
               // user then ignore it.
               if (! DirectoryServer.isRootDN(bindDN))
               {
-                int    msgID   = MSGID_BIND_OPERATION_WRITABILITY_DISABLED;
-                String message = getMessage(msgID, String.valueOf(bindDN));
+                Message message = ERR_BIND_OPERATION_WRITABILITY_DISABLED.get(
+                        String.valueOf(bindDN));
 
                 localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
-                localOp.setAuthFailureReason(msgID, message);
+                localOp.setAuthFailureReason(message);
                 break bindProcessing;
               }
             }
@@ -3394,11 +3356,11 @@
             if (policy.requireSecureAuthentication() &&
                 (! clientConnection.isSecure()))
             {
-              int    msgID   = MSGID_BIND_OPERATION_INSECURE_SIMPLE_BIND;
-              String message = getMessage(msgID, String.valueOf(bindDN));
+              Message message = ERR_BIND_OPERATION_INSECURE_SIMPLE_BIND.get(
+                      String.valueOf(bindDN));
 
               localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
-              localOp.setAuthFailureReason(msgID, message);
+              localOp.setAuthFailureReason(message);
               break bindProcessing;
             }
 
@@ -3406,31 +3368,31 @@
             // Check to see if the user is administratively disabled or locked.
             if (pwPolicyState.isDisabled())
             {
-              int    msgID   = MSGID_BIND_OPERATION_ACCOUNT_DISABLED;
-              String message = getMessage(msgID, String.valueOf(bindDN));
+              Message message = ERR_BIND_OPERATION_ACCOUNT_DISABLED.get(
+                      String.valueOf(bindDN));
 
               localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
-              localOp.setAuthFailureReason(msgID, message);
+              localOp.setAuthFailureReason(message);
               break bindProcessing;
             }
             else if (pwPolicyState.isAccountExpired())
             {
-              int    msgID   = MSGID_BIND_OPERATION_ACCOUNT_EXPIRED;
-              String message = getMessage(msgID, String.valueOf(bindDN));
+              Message message = ERR_BIND_OPERATION_ACCOUNT_EXPIRED.get(
+                      String.valueOf(bindDN));
 
               localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
-              localOp.setAuthFailureReason(msgID, message);
+              localOp.setAuthFailureReason(message);
 
               pwPolicyState.generateAccountStatusNotification(
-                   AccountStatusNotificationType.ACCOUNT_EXPIRED, bindDN, msgID,
-                   message);
+                   AccountStatusNotificationType.ACCOUNT_EXPIRED, bindDN,
+                      message);
 
               break bindProcessing;
             }
             else if (pwPolicyState.lockedDueToFailures())
             {
-              int    msgID   = MSGID_BIND_OPERATION_ACCOUNT_FAILURE_LOCKED;
-              String message = getMessage(msgID, String.valueOf(bindDN));
+              Message message = ERR_BIND_OPERATION_ACCOUNT_FAILURE_LOCKED.get(
+                      String.valueOf(bindDN));
 
               if (pwPolicyErrorType == null)
               {
@@ -3438,13 +3400,13 @@
               }
 
               localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
-              localOp.setAuthFailureReason(msgID, message);
+              localOp.setAuthFailureReason(message);
               break bindProcessing;
             }
             else if (pwPolicyState.lockedDueToMaximumResetAge())
             {
-              int    msgID   = MSGID_BIND_OPERATION_ACCOUNT_RESET_LOCKED;
-              String message = getMessage(msgID, String.valueOf(bindDN));
+              Message message = ERR_BIND_OPERATION_ACCOUNT_RESET_LOCKED.get(
+                      String.valueOf(bindDN));
 
               if (pwPolicyErrorType == null)
               {
@@ -3452,18 +3414,18 @@
               }
 
               localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
-              localOp.setAuthFailureReason(msgID, message);
+              localOp.setAuthFailureReason(message);
 
               pwPolicyState.generateAccountStatusNotification(
                    AccountStatusNotificationType.ACCOUNT_RESET_LOCKED, bindDN,
-                   msgID, message);
+                      message);
 
               break bindProcessing;
             }
             else if (pwPolicyState.lockedDueToIdleInterval())
             {
-              int    msgID   = MSGID_BIND_OPERATION_ACCOUNT_IDLE_LOCKED;
-              String message = getMessage(msgID, String.valueOf(bindDN));
+              Message message = ERR_BIND_OPERATION_ACCOUNT_IDLE_LOCKED.get(
+                      String.valueOf(bindDN));
 
               if (pwPolicyErrorType == null)
               {
@@ -3471,11 +3433,11 @@
               }
 
               localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
-              localOp.setAuthFailureReason(msgID, message);
+              localOp.setAuthFailureReason(message);
 
               pwPolicyState.generateAccountStatusNotification(
                    AccountStatusNotificationType.ACCOUNT_IDLE_LOCKED, bindDN,
-                   msgID, message);
+                      message);
 
               break bindProcessing;
             }
@@ -3510,30 +3472,30 @@
                 }
                 else
                 {
-                  int    msgID   = MSGID_BIND_OPERATION_PASSWORD_EXPIRED;
-                  String message = getMessage(msgID, String.valueOf(bindDN));
+                  Message message = ERR_BIND_OPERATION_PASSWORD_EXPIRED.get(
+                          String.valueOf(bindDN));
 
                   localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
-                  localOp.setAuthFailureReason(msgID, message);
+                  localOp.setAuthFailureReason(message);
 
                   pwPolicyState.generateAccountStatusNotification(
                        AccountStatusNotificationType.PASSWORD_EXPIRED, bindDN,
-                       msgID, message);
+                          message);
 
                   break bindProcessing;
                 }
               }
               else
               {
-                int    msgID   = MSGID_BIND_OPERATION_PASSWORD_EXPIRED;
-                String message = getMessage(msgID, String.valueOf(bindDN));
+                Message message = ERR_BIND_OPERATION_PASSWORD_EXPIRED.get(
+                        String.valueOf(bindDN));
 
                 localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
-                localOp.setAuthFailureReason(msgID, message);
+                localOp.setAuthFailureReason(message);
 
                 pwPolicyState.generateAccountStatusNotification(
                      AccountStatusNotificationType.PASSWORD_EXPIRED, bindDN,
-                     msgID, message);
+                        message);
 
                 break bindProcessing;
               }
@@ -3541,10 +3503,10 @@
             else if (pwPolicyState.shouldWarn())
             {
               int numSeconds = pwPolicyState.getSecondsUntilExpiration();
-              String timeToExpiration = secondsToTimeString(numSeconds);
+              Message timeToExpiration = secondsToTimeString(numSeconds);
 
-              int msgID = MSGID_BIND_PASSWORD_EXPIRING;
-              String message = getMessage(msgID, timeToExpiration);
+              Message message = INFO_BIND_PASSWORD_EXPIRING.get(
+                      timeToExpiration);
               localOp.appendErrorMessage(message);
 
               if (pwPolicyWarningType == null)
@@ -3579,8 +3541,8 @@
               // and return.
               localOp.setResultCode(ResultCode.CANCELED);
 
-              int msgID = MSGID_CANCELED_BY_PREOP_DISCONNECT;
-              localOp.appendErrorMessage(getMessage(msgID));
+              localOp.appendErrorMessage(
+                      ERR_CANCELED_BY_PREOP_DISCONNECT.get());
 
               return;
             }
@@ -3607,8 +3569,8 @@
               {
                 localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
 
-                int msgID = MSGID_BIND_REJECTED_LOCKDOWN_MODE;
-                localOp.setAuthFailureReason(msgID, getMessage(msgID));
+                Message message = ERR_BIND_REJECTED_LOCKDOWN_MODE.get();
+                localOp.setAuthFailureReason(message);
 
                 break bindProcessing;
               }
@@ -3633,11 +3595,9 @@
                   AttributeValue v = iterator.next();
                   if (iterator.hasNext())
                   {
-                    int msgID = MSGID_BIND_MULTIPLE_USER_SIZE_LIMITS;
-                    String message =
-                         getMessage(msgID, String.valueOf(userEntry.getDN()));
-                    logError(ErrorLogCategory.CORE_SERVER,
-                             ErrorLogSeverity.SEVERE_WARNING, message, msgID);
+                    Message message = WARN_BIND_MULTIPLE_USER_SIZE_LIMITS.get(
+                        String.valueOf(userEntry.getDN()));
+                    logError(message);
                   }
                   else
                   {
@@ -3652,12 +3612,10 @@
                         TRACER.debugCaught(DebugLogLevel.ERROR, e);
                       }
 
-                      int msgID = MSGID_BIND_CANNOT_PROCESS_USER_SIZE_LIMIT;
-                      String message =
-                           getMessage(msgID, v.getStringValue(),
-                                      String.valueOf(userEntry.getDN()));
-                      logError(ErrorLogCategory.CORE_SERVER,
-                               ErrorLogSeverity.SEVERE_WARNING, message, msgID);
+                      Message message = WARN_BIND_CANNOT_PROCESS_USER_SIZE_LIMIT
+                              .get(v.getStringValue(),
+                                String.valueOf(userEntry.getDN()));
+                      logError(message);
                     }
                   }
                 }
@@ -3679,11 +3637,9 @@
                   AttributeValue v = iterator.next();
                   if (iterator.hasNext())
                   {
-                    int msgID = MSGID_BIND_MULTIPLE_USER_TIME_LIMITS;
-                    String message =
-                         getMessage(msgID, String.valueOf(userEntry.getDN()));
-                    logError(ErrorLogCategory.CORE_SERVER,
-                             ErrorLogSeverity.SEVERE_WARNING, message, msgID);
+                    Message message = WARN_BIND_MULTIPLE_USER_TIME_LIMITS.get(
+                        String.valueOf(userEntry.getDN()));
+                    logError(message);
                   }
                   else
                   {
@@ -3698,12 +3654,11 @@
                         TRACER.debugCaught(DebugLogLevel.ERROR, e);
                       }
 
-                      int msgID = MSGID_BIND_CANNOT_PROCESS_USER_TIME_LIMIT;
-                      String message =
-                           getMessage(msgID, v.getStringValue(),
-                                      String.valueOf(userEntry.getDN()));
-                      logError(ErrorLogCategory.CORE_SERVER,
-                               ErrorLogSeverity.SEVERE_WARNING, message, msgID);
+                      Message message =
+                          WARN_BIND_CANNOT_PROCESS_USER_TIME_LIMIT.
+                            get(v.getStringValue(),
+                                String.valueOf(userEntry.getDN()));
+                      logError(message);
                     }
                   }
                 }
@@ -3724,11 +3679,9 @@
                   AttributeValue v = iterator.next();
                   if (iterator.hasNext())
                   {
-                    int msgID = MSGID_BIND_MULTIPLE_USER_IDLE_TIME_LIMITS;
-                    String message =
-                         getMessage(msgID, String.valueOf(userEntry.getDN()));
-                    logError(ErrorLogCategory.CORE_SERVER,
-                             ErrorLogSeverity.SEVERE_WARNING, message, msgID);
+                    Message message = WARN_BIND_MULTIPLE_USER_IDLE_TIME_LIMITS.
+                        get(String.valueOf(userEntry.getDN()));
+                    logError(message);
                   }
                   else
                   {
@@ -3744,13 +3697,11 @@
                         TRACER.debugCaught(DebugLogLevel.ERROR, e);
                       }
 
-                      int msgID =
-                           MSGID_BIND_CANNOT_PROCESS_USER_IDLE_TIME_LIMIT;
-                      String message =
-                           getMessage(msgID, v.getStringValue(),
-                                      String.valueOf(userEntry.getDN()));
-                      logError(ErrorLogCategory.CORE_SERVER,
-                               ErrorLogSeverity.SEVERE_WARNING, message, msgID);
+                      Message message =
+                          WARN_BIND_CANNOT_PROCESS_USER_IDLE_TIME_LIMIT.
+                            get(v.getStringValue(),
+                                String.valueOf(userEntry.getDN()));
+                      logError(message);
                     }
                   }
                 }
@@ -3772,11 +3723,10 @@
                   AttributeValue v = iterator.next();
                   if (iterator.hasNext())
                   {
-                    int msgID = MSGID_BIND_MULTIPLE_USER_LOOKTHROUGH_LIMITS;
-                    String message =
-                         getMessage(msgID, String.valueOf(userEntry.getDN()));
-                    logError(ErrorLogCategory.CORE_SERVER,
-                             ErrorLogSeverity.SEVERE_WARNING, message, msgID);
+                    Message message =
+                        WARN_BIND_MULTIPLE_USER_LOOKTHROUGH_LIMITS.
+                          get(String.valueOf(userEntry.getDN()));
+                    logError(message);
                   }
                   else
                   {
@@ -3791,13 +3741,11 @@
                         TRACER.debugCaught(DebugLogLevel.ERROR, e);
                       }
 
-                      int msgID =
-                          MSGID_BIND_CANNOT_PROCESS_USER_LOOKTHROUGH_LIMIT;
-                      String message =
-                           getMessage(msgID, v.getStringValue(),
-                                      String.valueOf(userEntry.getDN()));
-                      logError(ErrorLogCategory.CORE_SERVER,
-                               ErrorLogSeverity.SEVERE_WARNING, message, msgID);
+                      Message message =
+                          WARN_BIND_CANNOT_PROCESS_USER_LOOKTHROUGH_LIMIT.
+                            get(v.getStringValue(),
+                                String.valueOf(userEntry.getDN()));
+                      logError(message);
                     }
                   }
                 }
@@ -3812,14 +3760,14 @@
                 pwPolicyState.setWarnedTime();
 
                 int numSeconds = pwPolicyState.getSecondsUntilExpiration();
-                String timeToExpiration = secondsToTimeString(numSeconds);
+                Message timeToExpiration = secondsToTimeString(numSeconds);
 
-                int msgID = MSGID_BIND_PASSWORD_EXPIRING;
-                String message = getMessage(msgID, timeToExpiration);
+                Message message = INFO_BIND_PASSWORD_EXPIRING.get(
+                        timeToExpiration);
 
                 pwPolicyState.generateAccountStatusNotification(
                      AccountStatusNotificationType.PASSWORD_EXPIRING, bindDN,
-                     msgID, message);
+                        message);
               }
 
               if (isGraceLogin)
@@ -3831,11 +3779,10 @@
             }
             else
             {
-              int    msgID   = MSGID_BIND_OPERATION_WRONG_PASSWORD;
-              String message = getMessage(msgID);
+              Message message = ERR_BIND_OPERATION_WRONG_PASSWORD.get();
 
               localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
-              localOp.setAuthFailureReason(msgID, message);
+              localOp.setAuthFailureReason(message);
 
               if (policy.getLockoutFailureCount() > 0)
               {
@@ -3849,21 +3796,21 @@
                   {
                     notificationType = AccountStatusNotificationType.
                                             ACCOUNT_TEMPORARILY_LOCKED;
-                    msgID   = MSGID_BIND_ACCOUNT_TEMPORARILY_LOCKED;
-                    message = getMessage(msgID,
-                                         secondsToTimeString(lockoutDuration));
+
+                    message = ERR_BIND_ACCOUNT_TEMPORARILY_LOCKED.get(
+                            secondsToTimeString(lockoutDuration));
                   }
                   else
                   {
                     notificationType = AccountStatusNotificationType.
                                             ACCOUNT_PERMANENTLY_LOCKED;
-                    msgID   = MSGID_BIND_ACCOUNT_PERMANENTLY_LOCKED;
-                    message = getMessage(msgID);
+
+                    message = ERR_BIND_ACCOUNT_PERMANENTLY_LOCKED.get();
                   }
 
                   pwPolicyState.generateAccountStatusNotification(
                        notificationType, localOp.getUserEntryDN(),
-                       msgID, message);
+                          message);
                 }
               }
             }
@@ -3875,11 +3822,11 @@
               TRACER.debugCaught(DebugLogLevel.ERROR, e);
             }
 
-            int    msgID   = MSGID_BIND_OPERATION_PASSWORD_VALIDATION_EXCEPTION;
-            String message = getMessage(msgID, getExceptionMessage(e));
+            Message message = ERR_BIND_OPERATION_PASSWORD_VALIDATION_EXCEPTION
+                    .get(getExceptionMessage(e));
 
             localOp.setResultCode(DirectoryServer.getServerErrorResultCode());
-            localOp.setAuthFailureReason(msgID, message);
+            localOp.setAuthFailureReason(message);
             break bindProcessing;
           }
           finally
@@ -3900,11 +3847,11 @@
           {
             localOp.setResultCode(ResultCode.AUTH_METHOD_NOT_SUPPORTED);
 
-            int    msgID   = MSGID_BIND_OPERATION_UNKNOWN_SASL_MECHANISM;
-            String message = getMessage(msgID, saslMechanism);
+            Message message = ERR_BIND_OPERATION_UNKNOWN_SASL_MECHANISM.get(
+                    saslMechanism);
 
             localOp.appendErrorMessage(message);
-            localOp.setAuthFailureReason(msgID, message);
+            localOp.setAuthFailureReason(message);
             break bindProcessing;
           }
 
@@ -3923,8 +3870,7 @@
             // and return.
             localOp.setResultCode(ResultCode.CANCELED);
 
-            int msgID = MSGID_CANCELED_BY_PREOP_DISCONNECT;
-            localOp.appendErrorMessage(getMessage(msgID));
+            localOp.appendErrorMessage(ERR_CANCELED_BY_PREOP_DISCONNECT.get());
 
             return;
           }
@@ -3957,8 +3903,8 @@
               {
                 localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
 
-                int msgID = MSGID_BIND_REJECTED_LOCKDOWN_MODE;
-                localOp.setAuthFailureReason(msgID, getMessage(msgID));
+                Message message = ERR_BIND_REJECTED_LOCKDOWN_MODE.get();
+                localOp.setAuthFailureReason(message);
 
                 break bindProcessing;
               }
@@ -4018,11 +3964,11 @@
               // user then ignore it.
               if (! DirectoryServer.isRootDN(bindDN))
               {
-                int    msgID   = MSGID_BIND_OPERATION_WRITABILITY_DISABLED;
-                String message = getMessage(msgID, userDNString);
+                Message message = ERR_BIND_OPERATION_WRITABILITY_DISABLED.get(
+                        userDNString);
 
                 localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
-                localOp.setAuthFailureReason(msgID, message);
+                localOp.setAuthFailureReason(message);
                 break bindProcessing;
               }
             }
@@ -4030,22 +3976,22 @@
             {
               localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
 
-              int    msgID   = MSGID_BIND_OPERATION_ACCOUNT_DISABLED;
-              String message = getMessage(msgID, userDNString);
-              localOp.setAuthFailureReason(msgID, message);
+              Message message = ERR_BIND_OPERATION_ACCOUNT_DISABLED.get(
+                      userDNString);
+              localOp.setAuthFailureReason(message);
               break bindProcessing;
             }
             else if (pwPolicyState.isAccountExpired())
             {
               localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
 
-              int    msgID   = MSGID_BIND_OPERATION_ACCOUNT_EXPIRED;
-              String message = getMessage(msgID, userDNString);
-              localOp.setAuthFailureReason(msgID, message);
+              Message message = ERR_BIND_OPERATION_ACCOUNT_EXPIRED.get(
+                      userDNString);
+              localOp.setAuthFailureReason(message);
 
               pwPolicyState.generateAccountStatusNotification(
-                   AccountStatusNotificationType.ACCOUNT_EXPIRED, bindDN, msgID,
-                   message);
+                   AccountStatusNotificationType.ACCOUNT_EXPIRED, bindDN,
+                      message);
 
               break bindProcessing;
             }
@@ -4056,9 +4002,9 @@
             {
               localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
 
-              int    msgID   = MSGID_BIND_OPERATION_INSECURE_SASL_BIND;
-              String message = getMessage(msgID, saslMechanism, userDNString);
-              localOp.setAuthFailureReason(msgID, message);
+              Message message = ERR_BIND_OPERATION_INSECURE_SASL_BIND.get(
+                      saslMechanism, userDNString);
+              localOp.setAuthFailureReason(message);
               break bindProcessing;
             }
 
@@ -4071,9 +4017,9 @@
                 pwPolicyErrorType = PasswordPolicyErrorType.ACCOUNT_LOCKED;
               }
 
-              int    msgID   = MSGID_BIND_OPERATION_ACCOUNT_FAILURE_LOCKED;
-              String message = getMessage(msgID, userDNString);
-              localOp.setAuthFailureReason(msgID, message);
+              Message message = ERR_BIND_OPERATION_ACCOUNT_FAILURE_LOCKED.get(
+                      userDNString);
+              localOp.setAuthFailureReason(message);
               break bindProcessing;
             }
 
@@ -4086,13 +4032,13 @@
                 pwPolicyErrorType = PasswordPolicyErrorType.ACCOUNT_LOCKED;
               }
 
-              int    msgID   = MSGID_BIND_OPERATION_ACCOUNT_IDLE_LOCKED;
-              String message = getMessage(msgID, userDNString);
-              localOp.setAuthFailureReason(msgID, message);
+              Message message = ERR_BIND_OPERATION_ACCOUNT_IDLE_LOCKED.get(
+                      userDNString);
+              localOp.setAuthFailureReason(message);
 
               pwPolicyState.generateAccountStatusNotification(
                    AccountStatusNotificationType.ACCOUNT_IDLE_LOCKED, bindDN,
-                   msgID, message);
+                      message);
 
               break bindProcessing;
             }
@@ -4109,13 +4055,13 @@
                   pwPolicyErrorType = PasswordPolicyErrorType.ACCOUNT_LOCKED;
                 }
 
-                int    msgID   = MSGID_BIND_OPERATION_ACCOUNT_RESET_LOCKED;
-                String message = getMessage(msgID, userDNString);
-                localOp.setAuthFailureReason(msgID, message);
+                Message message = ERR_BIND_OPERATION_ACCOUNT_RESET_LOCKED.get(
+                        userDNString);
+                localOp.setAuthFailureReason(message);
 
                 pwPolicyState.generateAccountStatusNotification(
                      AccountStatusNotificationType.ACCOUNT_RESET_LOCKED, bindDN,
-                     msgID, message);
+                        message);
 
                 break bindProcessing;
               }
@@ -4148,30 +4094,30 @@
                   }
                   else
                   {
-                    int    msgID   = MSGID_BIND_OPERATION_PASSWORD_EXPIRED;
-                    String message = getMessage(msgID, String.valueOf(bindDN));
+                    Message message = ERR_BIND_OPERATION_PASSWORD_EXPIRED.get(
+                            String.valueOf(bindDN));
 
                     localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
-                    localOp.setAuthFailureReason(msgID, message);
+                    localOp.setAuthFailureReason(message);
 
                     pwPolicyState.generateAccountStatusNotification(
                          AccountStatusNotificationType.PASSWORD_EXPIRED, bindDN,
-                         msgID, message);
+                            message);
 
                     break bindProcessing;
                   }
                 }
                 else
                 {
-                  int    msgID   = MSGID_BIND_OPERATION_PASSWORD_EXPIRED;
-                  String message = getMessage(msgID, String.valueOf(bindDN));
+                  Message message = ERR_BIND_OPERATION_PASSWORD_EXPIRED.get(
+                          String.valueOf(bindDN));
 
                   localOp.setResultCode(ResultCode.INVALID_CREDENTIALS);
-                  localOp.setAuthFailureReason(msgID, message);
+                  localOp.setAuthFailureReason(message);
 
                   pwPolicyState.generateAccountStatusNotification(
                        AccountStatusNotificationType.PASSWORD_EXPIRED, bindDN,
-                       msgID, message);
+                          message);
 
                   break bindProcessing;
                 }
@@ -4179,10 +4125,10 @@
               else if (pwPolicyState.shouldWarn())
               {
                 int numSeconds = pwPolicyState.getSecondsUntilExpiration();
-                String timeToExpiration = secondsToTimeString(numSeconds);
+                Message timeToExpiration = secondsToTimeString(numSeconds);
 
-                int    msgID   = MSGID_BIND_PASSWORD_EXPIRING;
-                String message = getMessage(msgID, timeToExpiration);
+                Message message = INFO_BIND_PASSWORD_EXPIRING.get(
+                        timeToExpiration);
                 localOp.appendErrorMessage(message);
 
                 if (pwPolicyWarningType == null)
@@ -4217,14 +4163,14 @@
                 pwPolicyState.setWarnedTime();
 
                 int numSeconds = pwPolicyState.getSecondsUntilExpiration();
-                String timeToExpiration = secondsToTimeString(numSeconds);
+                Message timeToExpiration = secondsToTimeString(numSeconds);
 
-                int msgID = MSGID_BIND_PASSWORD_EXPIRING;
-                String message = getMessage(msgID, timeToExpiration);
+                Message message = INFO_BIND_PASSWORD_EXPIRING.get(
+                        timeToExpiration);
 
                 pwPolicyState.generateAccountStatusNotification(
                      AccountStatusNotificationType.PASSWORD_EXPIRING, bindDN,
-                     msgID, message);
+                        message);
               }
 
               if (isGraceLogin)
@@ -4251,10 +4197,9 @@
                   AttributeValue v = iterator.next();
                   if (iterator.hasNext())
                   {
-                    int msgID = MSGID_BIND_MULTIPLE_USER_SIZE_LIMITS;
-                    String message = getMessage(msgID, userDNString);
-                    logError(ErrorLogCategory.CORE_SERVER,
-                             ErrorLogSeverity.SEVERE_WARNING, message, msgID);
+                    Message message =
+                        WARN_BIND_MULTIPLE_USER_SIZE_LIMITS.get(userDNString);
+                    logError(message);
                   }
                   else
                   {
@@ -4269,11 +4214,10 @@
                         TRACER.debugCaught(DebugLogLevel.ERROR, e);
                       }
 
-                      int msgID = MSGID_BIND_CANNOT_PROCESS_USER_SIZE_LIMIT;
-                      String message =
-                           getMessage(msgID, v.getStringValue(), userDNString);
-                      logError(ErrorLogCategory.CORE_SERVER,
-                               ErrorLogSeverity.SEVERE_WARNING, message, msgID);
+                      Message message =
+                          WARN_BIND_CANNOT_PROCESS_USER_SIZE_LIMIT.
+                            get(v.getStringValue(), userDNString);
+                      logError(message);
                     }
                   }
                 }
@@ -4295,10 +4239,9 @@
                   AttributeValue v = iterator.next();
                   if (iterator.hasNext())
                   {
-                    int msgID = MSGID_BIND_MULTIPLE_USER_TIME_LIMITS;
-                    String message = getMessage(msgID, userDNString);
-                    logError(ErrorLogCategory.CORE_SERVER,
-                             ErrorLogSeverity.SEVERE_WARNING, message, msgID);
+                    Message message =
+                        WARN_BIND_MULTIPLE_USER_TIME_LIMITS.get(userDNString);
+                    logError(message);
                   }
                   else
                   {
@@ -4313,11 +4256,10 @@
                         TRACER.debugCaught(DebugLogLevel.ERROR, e);
                       }
 
-                      int msgID = MSGID_BIND_CANNOT_PROCESS_USER_TIME_LIMIT;
-                      String message =
-                           getMessage(msgID, v.getStringValue(), userDNString);
-                      logError(ErrorLogCategory.CORE_SERVER,
-                               ErrorLogSeverity.SEVERE_WARNING, message, msgID);
+                      Message message =
+                          WARN_BIND_CANNOT_PROCESS_USER_TIME_LIMIT.
+                            get(v.getStringValue(), userDNString);
+                      logError(message);
                     }
                   }
                 }
@@ -4338,11 +4280,9 @@
                   AttributeValue v = iterator.next();
                   if (iterator.hasNext())
                   {
-                    int msgID = MSGID_BIND_MULTIPLE_USER_IDLE_TIME_LIMITS;
-                    String message =
-                         getMessage(msgID, String.valueOf(userDNString));
-                    logError(ErrorLogCategory.CORE_SERVER,
-                             ErrorLogSeverity.SEVERE_WARNING, message, msgID);
+                    Message message = WARN_BIND_MULTIPLE_USER_IDLE_TIME_LIMITS.
+                        get(String.valueOf(userDNString));
+                    logError(message);
                   }
                   else
                   {
@@ -4358,13 +4298,11 @@
                         TRACER.debugCaught(DebugLogLevel.ERROR, e);
                       }
 
-                      int msgID =
-                           MSGID_BIND_CANNOT_PROCESS_USER_IDLE_TIME_LIMIT;
-                      String message =
-                           getMessage(msgID, v.getStringValue(),
-                                      String.valueOf(userDNString));
-                      logError(ErrorLogCategory.CORE_SERVER,
-                               ErrorLogSeverity.SEVERE_WARNING, message, msgID);
+                      Message message =
+                          WARN_BIND_CANNOT_PROCESS_USER_IDLE_TIME_LIMIT.
+                            get(v.getStringValue(),
+                                String.valueOf(userDNString));
+                      logError(message);
                     }
                   }
                 }
@@ -4386,10 +4324,10 @@
                   AttributeValue v = iterator.next();
                   if (iterator.hasNext())
                   {
-                    int msgID = MSGID_BIND_MULTIPLE_USER_LOOKTHROUGH_LIMITS;
-                    String message = getMessage(msgID, userDNString);
-                    logError(ErrorLogCategory.CORE_SERVER,
-                             ErrorLogSeverity.SEVERE_WARNING, message, msgID);
+                    Message message =
+                        WARN_BIND_MULTIPLE_USER_LOOKTHROUGH_LIMITS.
+                          get(userDNString);
+                    logError(message);
                   }
                   else
                   {
@@ -4404,12 +4342,10 @@
                         TRACER.debugCaught(DebugLogLevel.ERROR, e);
                       }
 
-                      int msgID =
-                          MSGID_BIND_CANNOT_PROCESS_USER_LOOKTHROUGH_LIMIT;
-                      String message =
-                           getMessage(msgID, v.getStringValue(), userDNString);
-                      logError(ErrorLogCategory.CORE_SERVER,
-                               ErrorLogSeverity.SEVERE_WARNING, message, msgID);
+                      Message message =
+                          WARN_BIND_CANNOT_PROCESS_USER_LOOKTHROUGH_LIMIT.
+                            get(v.getStringValue(), userDNString);
+                      logError(message);
                     }
                   }
                 }
@@ -4433,29 +4369,26 @@
                   if (pwPolicyState.lockedDueToFailures())
                   {
                     AccountStatusNotificationType notificationType;
-                    int msgID;
-                    String message;
+                    Message message;
 
                     int lockoutDuration = pwPolicyState.getSecondsUntilUnlock();
                     if (lockoutDuration > -1)
                     {
                       notificationType = AccountStatusNotificationType.
                                               ACCOUNT_TEMPORARILY_LOCKED;
-                      msgID   = MSGID_BIND_ACCOUNT_TEMPORARILY_LOCKED;
-                      message = getMessage(msgID,
-                                     secondsToTimeString(lockoutDuration));
+                      message = ERR_BIND_ACCOUNT_TEMPORARILY_LOCKED.get(
+                              secondsToTimeString(lockoutDuration));
                     }
                     else
                     {
                       notificationType = AccountStatusNotificationType.
                                               ACCOUNT_PERMANENTLY_LOCKED;
-                      msgID   = MSGID_BIND_ACCOUNT_PERMANENTLY_LOCKED;
-                      message = getMessage(msgID);
+                      message = ERR_BIND_ACCOUNT_PERMANENTLY_LOCKED.get();
                     }
 
                     pwPolicyState.generateAccountStatusNotification(
                          notificationType, localOp.getUserEntryDN(),
-                         msgID, message);
+                            message);
                   }
                 }
               }
@@ -4504,8 +4437,7 @@
         // and return.
         localOp.setResultCode(ResultCode.CANCELED);
 
-        int msgID = MSGID_CANCELED_BY_PREOP_DISCONNECT;
-        localOp.appendErrorMessage(getMessage(msgID));
+        localOp.appendErrorMessage(ERR_CANCELED_BY_PREOP_DISCONNECT.get());
 
         return;
       }
@@ -4669,7 +4601,7 @@
         {
           // This is not fine.  The root DSE cannot be added.
           localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-          localOp.appendErrorMessage(getMessage(MSGID_ADD_CANNOT_ADD_ROOT_DSE));
+          localOp.appendErrorMessage(ERR_ADD_CANNOT_ADD_ROOT_DSE.get());
           break addProcessing;
         }
         else
@@ -4677,8 +4609,8 @@
           // The entry doesn't have a parent but isn't a suffix.  This is not
           // allowed.
           localOp.setResultCode(ResultCode.NO_SUCH_OBJECT);
-          localOp.appendErrorMessage(getMessage(MSGID_ADD_ENTRY_NOT_SUFFIX,
-                                        String.valueOf(entryDN)));
+          localOp.appendErrorMessage(ERR_ADD_ENTRY_NOT_SUFFIX.get(
+                  String.valueOf(entryDN)));
           break addProcessing;
         }
       }
@@ -4696,9 +4628,9 @@
         if (parentLock == null)
         {
           localOp.setResultCode(DirectoryServer.getServerErrorResultCode());
-          localOp.appendErrorMessage(getMessage(MSGID_ADD_CANNOT_LOCK_PARENT,
-                                        String.valueOf(entryDN),
-                                        String.valueOf(parentDN)));
+          localOp.appendErrorMessage(ERR_ADD_CANNOT_LOCK_PARENT.get(
+                  String.valueOf(entryDN),
+                  String.valueOf(parentDN)));
 
           skipPostOperation = true;
           break addProcessing;
@@ -4732,8 +4664,8 @@
         if (entryLock == null)
         {
           localOp.setResultCode(DirectoryServer.getServerErrorResultCode());
-          localOp.appendErrorMessage(getMessage(MSGID_ADD_CANNOT_LOCK_ENTRY,
-                                        String.valueOf(entryDN)));
+          localOp.appendErrorMessage(ERR_ADD_CANNOT_LOCK_ENTRY.get(
+                  String.valueOf(entryDN)));
 
           skipPostOperation = true;
           break addProcessing;
@@ -4761,12 +4693,9 @@
               TRACER.debugCaught(DebugLogLevel.ERROR, de);
             }
 
-            logError(ErrorLogCategory.SYNCHRONIZATION,
-                     ErrorLogSeverity.SEVERE_ERROR,
-                     MSGID_ADD_SYNCH_CONFLICT_RESOLUTION_FAILED,
-                     localOp.getConnectionID(),
-                     localOp.getOperationID(),
-                     getExceptionMessage(de));
+            logError(ERR_ADD_SYNCH_CONFLICT_RESOLUTION_FAILED.
+                get(localOp.getConnectionID(), localOp.getOperationID(),
+                    getExceptionMessage(de)));
 
             localOp.setResponseData(de);
             break addProcessing;
@@ -4782,9 +4711,8 @@
           if (DirectoryServer.entryExists(entryDN))
           {
             localOp.setResultCode(ResultCode.ENTRY_ALREADY_EXISTS);
-              localOp.appendErrorMessage(getMessage(
-                                MSGID_ADD_ENTRY_ALREADY_EXISTS,
-                                String.valueOf(entryDN)));
+            localOp.appendErrorMessage(ERR_ADD_ENTRY_ALREADY_EXISTS.get(
+                    String.valueOf(entryDN)));
             break addProcessing;
           }
         }
@@ -4796,7 +4724,7 @@
           }
 
           localOp.setResultCode(de.getResultCode());
-          localOp.appendErrorMessage(de.getErrorMessage());
+          localOp.appendErrorMessage(de.getMessageObject());
           localOp.setMatchedDN(de.getMatchedDN());
           localOp.setReferralURLs(de.getReferralURLs());
           break addProcessing;
@@ -4839,9 +4767,9 @@
 
               // The parent doesn't exist, so this add can't be successful.
               localOp.setResultCode(ResultCode.NO_SUCH_OBJECT);
-              localOp.appendErrorMessage(getMessage(MSGID_ADD_NO_PARENT,
-                                            String.valueOf(entryDN),
-                                            String.valueOf(parentDN)));
+              localOp.appendErrorMessage(ERR_ADD_NO_PARENT.get(
+                      String.valueOf(entryDN),
+                      String.valueOf(parentDN)));
               break addProcessing;
             }
           }
@@ -4853,7 +4781,7 @@
             }
 
             localOp.setResultCode(de.getResultCode());
-            localOp.appendErrorMessage(de.getErrorMessage());
+            localOp.appendErrorMessage(de.getMessageObject());
             localOp.setMatchedDN(de.getMatchedDN());
             localOp.setReferralURLs(de.getReferralURLs());
             break addProcessing;
@@ -4891,10 +4819,9 @@
               {
                 localOp.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
 
-                int msgID = MSGID_ADD_MISSING_RDN_ATTRIBUTE;
-                localOp.appendErrorMessage(getMessage(msgID,
-                                                      String.valueOf(entryDN),
-                                                      n));
+                localOp.appendErrorMessage(ERR_ADD_MISSING_RDN_ATTRIBUTE.get(
+                        String.valueOf(entryDN),
+                        n));
 
                 break addProcessing;
               }
@@ -4934,9 +4861,9 @@
                 {
                   localOp.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
 
-                  int msgID = MSGID_ADD_MISSING_RDN_ATTRIBUTE;
                   localOp.appendErrorMessage(
-                      getMessage(msgID, String.valueOf(entryDN), n));
+                      ERR_ADD_MISSING_RDN_ATTRIBUTE.get(
+                              String.valueOf(entryDN), n));
 
                   break addProcessing;
                 }
@@ -4964,9 +4891,9 @@
               {
                 localOp.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
 
-                int msgID = MSGID_ADD_MISSING_RDN_ATTRIBUTE;
                 localOp.appendErrorMessage(
-                    getMessage(msgID, String.valueOf(entryDN),n));
+                    ERR_ADD_MISSING_RDN_ATTRIBUTE.get(
+                            String.valueOf(entryDN),n));
 
                 break addProcessing;
               }
@@ -5006,9 +4933,9 @@
                 {
                   localOp.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
 
-                  int msgID = MSGID_ADD_MISSING_RDN_ATTRIBUTE;
                   localOp.appendErrorMessage(
-                      getMessage(msgID, String.valueOf(entryDN),n));
+                      ERR_ADD_MISSING_RDN_ATTRIBUTE.get(
+                              String.valueOf(entryDN),n));
 
                   break addProcessing;
                 }
@@ -5059,8 +4986,9 @@
             (! clientConnection.hasPrivilege(Privilege.PRIVILEGE_CHANGE,
                 localOp)))
         {
-          int msgID = MSGID_ADD_CHANGE_PRIVILEGE_INSUFFICIENT_PRIVILEGES;
-          localOp.appendErrorMessage(getMessage(msgID));
+
+          localOp.appendErrorMessage(
+                  ERR_ADD_CHANGE_PRIVILEGE_INSUFFICIENT_PRIVILEGES.get());
           localOp.setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
           break addProcessing;
         }
@@ -5098,10 +5026,10 @@
                   TRACER.debugCaught(DebugLogLevel.ERROR, de);
                 }
 
-                int msgID = MSGID_ADD_INVALID_PWPOLICY_DN_SYNTAX;
                 localOp.appendErrorMessage(
-                    getMessage(msgID, String.valueOf(entryDN),
-                        de.getErrorMessage()));
+                    ERR_ADD_INVALID_PWPOLICY_DN_SYNTAX.get(
+                            String.valueOf(entryDN),
+                            de.getMessageObject()));
 
                 localOp.setResultCode(ResultCode.INVALID_ATTRIBUTE_SYNTAX);
                 break addProcessing;
@@ -5110,9 +5038,8 @@
               pwPolicy = DirectoryServer.getPasswordPolicy(policyDN);
               if (pwPolicy == null)
               {
-                int msgID = MSGID_ADD_NO_SUCH_PWPOLICY;
                 localOp.appendErrorMessage(
-                    getMessage(msgID, String.valueOf(entryDN),
+                    ERR_ADD_NO_SUCH_PWPOLICY.get(String.valueOf(entryDN),
                         String.valueOf(policyDN)));
 
                 localOp.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
@@ -5149,7 +5076,7 @@
         if ((DirectoryServer.checkSchema()) &&
             (!localOp.isSynchronizationOperation()) )
         {
-          StringBuilder invalidReason = new StringBuilder();
+          MessageBuilder invalidReason = new MessageBuilder();
           if (! entry.conformsToSchema(parentEntry, true, true, true,
                                        invalidReason))
           {
@@ -5162,7 +5089,7 @@
             switch (DirectoryServer.getSyntaxEnforcementPolicy())
             {
               case REJECT:
-                invalidReason = new StringBuilder();
+                invalidReason = new MessageBuilder();
                 for (List<Attribute> attrList : userAttributes.values())
                 {
                   for (Attribute a : attrList)
@@ -5175,13 +5102,12 @@
                         if (! syntax.valueIsAcceptable(v.getValue(),
                                                        invalidReason))
                         {
-                          String message =
-                               getMessage(MSGID_ADD_OP_INVALID_SYNTAX,
-                                          String.valueOf(entryDN),
-                                          String.valueOf(v.getStringValue()),
-                                          String.valueOf(a.getName()),
-                                          String.valueOf(invalidReason));
-                          invalidReason = new StringBuilder(message);
+                          Message message = WARN_ADD_OP_INVALID_SYNTAX.
+                              get(String.valueOf(entryDN),
+                                  String.valueOf(v.getStringValue()),
+                                  String.valueOf(a.getName()),
+                                  String.valueOf(invalidReason));
+                          invalidReason = new MessageBuilder(message);
 
                           localOp.setResultCode(
                               ResultCode.INVALID_ATTRIBUTE_SYNTAX);
@@ -5206,13 +5132,12 @@
                         if (! syntax.valueIsAcceptable(v.getValue(),
                                                        invalidReason))
                         {
-                          String message =
-                               getMessage(MSGID_ADD_OP_INVALID_SYNTAX,
-                                          String.valueOf(entryDN),
-                                          String.valueOf(v.getStringValue()),
-                                          String.valueOf(a.getName()),
-                                          String.valueOf(invalidReason));
-                          invalidReason = new StringBuilder(message);
+                          Message message = WARN_ADD_OP_INVALID_SYNTAX.
+                              get(String.valueOf(entryDN),
+                                  String.valueOf(v.getStringValue()),
+                                  String.valueOf(a.getName()),
+                                  String.valueOf(invalidReason));
+                          invalidReason = new MessageBuilder(message);
 
                           localOp.setResultCode(
                               ResultCode.INVALID_ATTRIBUTE_SYNTAX);
@@ -5228,7 +5153,7 @@
 
 
               case WARN:
-                invalidReason = new StringBuilder();
+                invalidReason = new MessageBuilder();
                 for (List<Attribute> attrList : userAttributes.values())
                 {
                   for (Attribute a : attrList)
@@ -5241,13 +5166,11 @@
                         if (! syntax.valueIsAcceptable(v.getValue(),
                                                        invalidReason))
                         {
-                          logError(ErrorLogCategory.SCHEMA,
-                                   ErrorLogSeverity.SEVERE_WARNING,
-                                   MSGID_ADD_OP_INVALID_SYNTAX,
-                                   String.valueOf(entryDN),
-                                   String.valueOf(v.getStringValue()),
-                                   String.valueOf(a.getName()),
-                                   String.valueOf(invalidReason));
+                          logError(WARN_ADD_OP_INVALID_SYNTAX.
+                              get(String.valueOf(entryDN),
+                                  String.valueOf(v.getStringValue()),
+                                  String.valueOf(a.getName()),
+                                  String.valueOf(invalidReason)));
                         }
                       }
                     }
@@ -5266,13 +5189,11 @@
                         if (! syntax.valueIsAcceptable(v.getValue(),
                                                        invalidReason))
                         {
-                          logError(ErrorLogCategory.SCHEMA,
-                                   ErrorLogSeverity.SEVERE_WARNING,
-                                   MSGID_ADD_OP_INVALID_SYNTAX,
-                                   String.valueOf(entryDN),
-                                   String.valueOf(v.getStringValue()),
-                                   String.valueOf(a.getName()),
-                                   String.valueOf(invalidReason));
+                          logError(WARN_ADD_OP_INVALID_SYNTAX.
+                              get(String.valueOf(entryDN),
+                                  String.valueOf(v.getStringValue()),
+                                  String.valueOf(a.getName()),
+                                  String.valueOf(invalidReason)));
                         }
                       }
                     }
@@ -5290,9 +5211,9 @@
           {
             if (at.isObsolete())
             {
-              int    msgID   = MSGID_ADD_ATTR_IS_OBSOLETE;
-              String message = getMessage(msgID, String.valueOf(entryDN),
-                                          at.getNameOrOID());
+              Message message = WARN_ADD_ATTR_IS_OBSOLETE.get(
+                      String.valueOf(entryDN),
+                      at.getNameOrOID());
               localOp.appendErrorMessage(message);
               localOp.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
               break addProcessing;
@@ -5303,9 +5224,9 @@
           {
             if (at.isObsolete())
             {
-              int    msgID   = MSGID_ADD_ATTR_IS_OBSOLETE;
-              String message = getMessage(msgID, String.valueOf(entryDN),
-                                          at.getNameOrOID());
+              Message message = WARN_ADD_ATTR_IS_OBSOLETE.get(
+                      String.valueOf(entryDN),
+                      at.getNameOrOID());
               localOp.appendErrorMessage(message);
               localOp.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
               break addProcessing;
@@ -5316,9 +5237,9 @@
           {
             if (oc.isObsolete())
             {
-              int    msgID   = MSGID_ADD_OC_IS_OBSOLETE;
-              String message = getMessage(msgID, String.valueOf(entryDN),
-                                          oc.getNameOrOID());
+              Message message = WARN_ADD_OC_IS_OBSOLETE.get(
+                      String.valueOf(entryDN),
+                      oc.getNameOrOID());
               localOp.appendErrorMessage(message);
               localOp.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
               break addProcessing;
@@ -5342,8 +5263,8 @@
                     getAccessControlHandler().isAllowed(parentDN, localOp, c))
             {
               localOp.setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
-              int msgID = MSGID_CONTROL_INSUFFICIENT_ACCESS_RIGHTS;
-              localOp.appendErrorMessage(getMessage(msgID, oid));
+              localOp.appendErrorMessage(
+                      ERR_CONTROL_INSUFFICIENT_ACCESS_RIGHTS.get(oid));
               skipPostOperation = true;
               break addProcessing;
             }
@@ -5370,7 +5291,7 @@
                   }
 
                   localOp.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  localOp.appendErrorMessage(le.getMessage());
+                  localOp.appendErrorMessage(le.getMessageObject());
 
                   break addProcessing;
                 }
@@ -5385,9 +5306,9 @@
                 {
                   localOp.setResultCode(ResultCode.ASSERTION_FAILED);
 
-                  localOp.appendErrorMessage(getMessage(
-                                                MSGID_ADD_ASSERTION_FAILED,
-                                                String.valueOf(entryDN)));
+                  localOp.appendErrorMessage(
+                          ERR_ADD_ASSERTION_FAILED.get(
+                                  String.valueOf(entryDN)));
 
                   break addProcessing;
                 }
@@ -5401,10 +5322,10 @@
 
                 localOp.setResultCode(ResultCode.PROTOCOL_ERROR);
 
-                int msgID = MSGID_ADD_CANNOT_PROCESS_ASSERTION_FILTER;
-                localOp.appendErrorMessage(getMessage(msgID,
-                                                      String.valueOf(entryDN),
-                                                      de.getErrorMessage()));
+                localOp.appendErrorMessage(
+                        ERR_ADD_CANNOT_PROCESS_ASSERTION_FILTER.get(
+                                String.valueOf(entryDN),
+                                de.getMessageObject()));
 
                 break addProcessing;
               }
@@ -5434,7 +5355,7 @@
                   }
 
                   localOp.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  localOp.appendErrorMessage(le.getMessage());
+                  localOp.appendErrorMessage(le.getMessageObject());
 
                   break addProcessing;
                 }
@@ -5447,8 +5368,8 @@
               if (! clientConnection.hasPrivilege(Privilege.PROXIED_AUTH,
                   localOp))
               {
-                int msgID = MSGID_PROXYAUTH_INSUFFICIENT_PRIVILEGES;
-                localOp.appendErrorMessage(getMessage(msgID));
+                localOp.appendErrorMessage(
+                        ERR_PROXYAUTH_INSUFFICIENT_PRIVILEGES.get());
                 localOp.setResultCode(ResultCode.AUTHORIZATION_DENIED);
                 break addProcessing;
               }
@@ -5473,7 +5394,7 @@
                   }
 
                   localOp.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  localOp.appendErrorMessage(le.getMessage());
+                  localOp.appendErrorMessage(le.getMessageObject());
 
                   break addProcessing;
                 }
@@ -5493,7 +5414,7 @@
                 }
 
                 localOp.setResultCode(de.getResultCode());
-                localOp.appendErrorMessage(de.getErrorMessage());
+                localOp.appendErrorMessage(de.getMessageObject());
 
                 break addProcessing;
               }
@@ -5515,8 +5436,8 @@
               if (! clientConnection.hasPrivilege(Privilege.PROXIED_AUTH,
                   localOp))
               {
-                int msgID = MSGID_PROXYAUTH_INSUFFICIENT_PRIVILEGES;
-                localOp.appendErrorMessage(getMessage(msgID));
+                localOp.appendErrorMessage(
+                        ERR_PROXYAUTH_INSUFFICIENT_PRIVILEGES.get());
                 localOp.setResultCode(ResultCode.AUTHORIZATION_DENIED);
                 break addProcessing;
               }
@@ -5541,7 +5462,7 @@
                   }
 
                   localOp.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  localOp.appendErrorMessage(le.getMessage());
+                  localOp.appendErrorMessage(le.getMessageObject());
 
                   break addProcessing;
                 }
@@ -5561,7 +5482,7 @@
                 }
 
                 localOp.setResultCode(de.getResultCode());
-                localOp.appendErrorMessage(de.getErrorMessage());
+                localOp.appendErrorMessage(de.getMessageObject());
 
                 break addProcessing;
               }
@@ -5590,10 +5511,10 @@
                 localOp.setResultCode(
                     ResultCode.UNAVAILABLE_CRITICAL_EXTENSION);
 
-                int msgID = MSGID_ADD_UNSUPPORTED_CRITICAL_CONTROL;
-                localOp.appendErrorMessage(getMessage(msgID,
-                                              String.valueOf(entryDN),
-                                              oid));
+                localOp.appendErrorMessage(
+                        ERR_ADD_UNSUPPORTED_CRITICAL_CONTROL.get(
+                                String.valueOf(entryDN),
+                                oid));
 
                 break addProcessing;
               }
@@ -5615,9 +5536,8 @@
             .getAccessControlHandler().isAllowed(localOp) == false) {
           localOp.setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
 
-          int msgID = MSGID_ADD_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS;
-          localOp.appendErrorMessage(getMessage(msgID,
-                                                String.valueOf(entryDN)));
+          localOp.appendErrorMessage(ERR_ADD_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS
+                  .get(String.valueOf(entryDN)));
 
           skipPostOperation = true;
           break addProcessing;
@@ -5642,8 +5562,7 @@
             // and return.
             localOp.setResultCode(ResultCode.CANCELED);
 
-            int msgID = MSGID_CANCELED_BY_PREOP_DISCONNECT;
-            localOp.appendErrorMessage(getMessage(msgID));
+            localOp.appendErrorMessage(ERR_CANCELED_BY_PREOP_DISCONNECT.get());
 
             return;
           }
@@ -5673,8 +5592,8 @@
         if (backend == null)
         {
           localOp.setResultCode(ResultCode.NO_SUCH_OBJECT);
-          localOp.appendErrorMessage("No backend for entry " +
-              entryDN.toString());
+          localOp.appendErrorMessage(Message.raw("No backend for entry " +
+              entryDN.toString())); // TODO: i18n
         }
         else
         {
@@ -5686,8 +5605,8 @@
             {
               case DISABLED:
                 localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-                localOp.appendErrorMessage(getMessage(MSGID_ADD_SERVER_READONLY,
-                                              String.valueOf(entryDN)));
+                localOp.appendErrorMessage(ERR_ADD_SERVER_READONLY.get(
+                        String.valueOf(entryDN)));
                 break addProcessing;
 
               case INTERNAL_ONLY:
@@ -5695,9 +5614,8 @@
                     localOp.isSynchronizationOperation()))
                 {
                   localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-                  localOp.appendErrorMessage(getMessage(
-                                                MSGID_ADD_SERVER_READONLY,
-                                                String.valueOf(entryDN)));
+                  localOp.appendErrorMessage(ERR_ADD_SERVER_READONLY.get(
+                          String.valueOf(entryDN)));
                   break addProcessing;
                 }
             }
@@ -5706,9 +5624,8 @@
             {
               case DISABLED:
                 localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-                localOp.appendErrorMessage(getMessage(
-                                              MSGID_ADD_BACKEND_READONLY,
-                                              String.valueOf(entryDN)));
+                localOp.appendErrorMessage(ERR_ADD_BACKEND_READONLY.get(
+                        String.valueOf(entryDN)));
                 break addProcessing;
 
               case INTERNAL_ONLY:
@@ -5716,9 +5633,8 @@
                     localOp.isSynchronizationOperation()))
                 {
                   localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-                  localOp.appendErrorMessage(getMessage(
-                                                MSGID_ADD_BACKEND_READONLY,
-                                                String.valueOf(entryDN)));
+                  localOp.appendErrorMessage(ERR_ADD_BACKEND_READONLY.get(
+                          String.valueOf(entryDN)));
                   break addProcessing;
                 }
             }
@@ -5729,7 +5645,7 @@
           {
             if (noOp)
             {
-              localOp.appendErrorMessage(getMessage(MSGID_ADD_NOOP));
+              localOp.appendErrorMessage(INFO_ADD_NOOP.get());
 
               localOp.setResultCode(ResultCode.NO_OPERATION);
             }
@@ -5754,12 +5670,9 @@
                     TRACER.debugCaught(DebugLogLevel.ERROR, de);
                   }
 
-                  logError(ErrorLogCategory.SYNCHRONIZATION,
-                           ErrorLogSeverity.SEVERE_ERROR,
-                           MSGID_ADD_SYNCH_PREOP_FAILED,
-                           localOp.getConnectionID(),
-                           localOp.getOperationID(),
-                           getExceptionMessage(de));
+                  logError(ERR_ADD_SYNCH_PREOP_FAILED.
+                      get(localOp.getConnectionID(), localOp.getOperationID(),
+                          getExceptionMessage(de)));
 
                   localOp.setResponseData(de);
                   break addProcessing;
@@ -5834,7 +5747,7 @@
             }
 
             localOp.setResultCode(de.getResultCode());
-            localOp.appendErrorMessage(de.getErrorMessage());
+            localOp.appendErrorMessage(de.getMessageObject());
             localOp.setMatchedDN(de.getMatchedDN());
             localOp.setReferralURLs(de.getReferralURLs());
 
@@ -5852,7 +5765,7 @@
             localOp.setCancelResult(cancelResult);
             localOp.setResultCode(cancelResult.getResultCode());
 
-            String message = coe.getMessage();
+            Message message = coe.getMessageObject();
             if ((message != null) && (message.length() > 0))
             {
               localOp.appendErrorMessage(message);
@@ -5889,12 +5802,9 @@
               TRACER.debugCaught(DebugLogLevel.ERROR, de);
             }
 
-            logError(ErrorLogCategory.SYNCHRONIZATION,
-                     ErrorLogSeverity.SEVERE_ERROR,
-                     MSGID_ADD_SYNCH_POSTOP_FAILED,
-                     localOp.getConnectionID(),
-                     localOp.getOperationID(),
-                     getExceptionMessage(de));
+            logError(ERR_ADD_SYNCH_POSTOP_FAILED.
+                get(localOp.getConnectionID(), localOp.getOperationID(),
+                    getExceptionMessage(de)));
 
             localOp.setResponseData(de);
             break;
@@ -5920,8 +5830,7 @@
         // return.
         localOp.setResultCode(ResultCode.CANCELED);
 
-        int msgID = MSGID_CANCELED_BY_PREOP_DISCONNECT;
-        localOp.appendErrorMessage(getMessage(msgID));
+        localOp.appendErrorMessage(ERR_CANCELED_BY_PREOP_DISCONNECT.get());
 
         return;
       }
@@ -5947,10 +5856,9 @@
             TRACER.debugCaught(DebugLogLevel.ERROR, e);
           }
 
-          int    msgID   = MSGID_ADD_ERROR_NOTIFYING_CHANGE_LISTENER;
-          String message = getMessage(msgID, getExceptionMessage(e));
-          logError(ErrorLogCategory.CORE_SERVER, ErrorLogSeverity.SEVERE_ERROR,
-                   message, msgID);
+          Message message = ERR_ADD_ERROR_NOTIFYING_CHANGE_LISTENER.get(
+              getExceptionMessage(e));
+          logError(message);
         }
       }
     }
@@ -6013,8 +5921,8 @@
       if (entryLock == null)
       {
         localOp.setResultCode(DirectoryServer.getServerErrorResultCode());
-        localOp.appendErrorMessage(getMessage(MSGID_DELETE_CANNOT_LOCK_ENTRY,
-                                      String.valueOf(entryDN)));
+        localOp.appendErrorMessage(ERR_DELETE_CANNOT_LOCK_ENTRY.get(
+                String.valueOf(entryDN)));
         break deleteProcessing;
       }
 
@@ -6029,8 +5937,8 @@
           if (entry == null)
           {
             localOp.setResultCode(ResultCode.NO_SUCH_OBJECT);
-            localOp.appendErrorMessage(getMessage(MSGID_DELETE_NO_SUCH_ENTRY,
-                                          String.valueOf(entryDN)));
+            localOp.appendErrorMessage(ERR_DELETE_NO_SUCH_ENTRY.get(
+                    String.valueOf(entryDN)));
 
             try
             {
@@ -6065,7 +5973,7 @@
           }
 
           localOp.setResultCode(de.getResultCode());
-          localOp.appendErrorMessage(de.getErrorMessage());
+          localOp.appendErrorMessage(de.getMessageObject());
           localOp.setMatchedDN(de.getMatchedDN());
           localOp.setReferralURLs(de.getReferralURLs());
           break deleteProcessing;
@@ -6093,12 +6001,9 @@
               TRACER.debugCaught(DebugLogLevel.ERROR, de);
             }
 
-            logError(ErrorLogCategory.SYNCHRONIZATION,
-                     ErrorLogSeverity.SEVERE_ERROR,
-                     MSGID_DELETE_SYNCH_CONFLICT_RESOLUTION_FAILED,
-                     localOp.getConnectionID(),
-                     localOp.getOperationID(),
-                     getExceptionMessage(de));
+            logError(ERR_DELETE_SYNCH_CONFLICT_RESOLUTION_FAILED.
+                get(localOp.getConnectionID(), localOp.getOperationID(),
+                    getExceptionMessage(de)));
 
             localOp.setResponseData(de);
             break deleteProcessing;
@@ -6125,8 +6030,9 @@
                      getAccessControlHandler().isAllowed(entryDN, localOp, c))
             {
               localOp.setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
-              int msgID = MSGID_CONTROL_INSUFFICIENT_ACCESS_RIGHTS;
-              localOp.appendErrorMessage(getMessage(msgID, oid));
+
+              localOp.appendErrorMessage(
+                      ERR_CONTROL_INSUFFICIENT_ACCESS_RIGHTS.get(oid));
               skipPostOperation = true;
               break deleteProcessing;
             }
@@ -6153,7 +6059,7 @@
                   }
 
                   localOp.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  localOp.appendErrorMessage(le.getMessage());
+                  localOp.appendErrorMessage(le.getMessageObject());
 
                   break deleteProcessing;
                 }
@@ -6168,9 +6074,9 @@
                 {
                   localOp.setResultCode(ResultCode.ASSERTION_FAILED);
 
-                  localOp.appendErrorMessage(getMessage(
-                                                MSGID_DELETE_ASSERTION_FAILED,
-                                                String.valueOf(entryDN)));
+                  localOp.appendErrorMessage(
+                          ERR_DELETE_ASSERTION_FAILED.get(
+                                  String.valueOf(entryDN)));
 
                   break deleteProcessing;
                 }
@@ -6184,10 +6090,10 @@
 
                 localOp.setResultCode(ResultCode.PROTOCOL_ERROR);
 
-                int msgID = MSGID_DELETE_CANNOT_PROCESS_ASSERTION_FILTER;
-                localOp.appendErrorMessage(getMessage(msgID,
-                                              String.valueOf(entryDN),
-                                              de.getErrorMessage()));
+                localOp.appendErrorMessage(
+                        ERR_DELETE_CANNOT_PROCESS_ASSERTION_FILTER.get(
+                                String.valueOf(entryDN),
+                                de.getMessageObject()));
 
                 break deleteProcessing;
               }
@@ -6217,7 +6123,7 @@
                   }
 
                   localOp.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  localOp.appendErrorMessage(le.getMessage());
+                  localOp.appendErrorMessage(le.getMessageObject());
 
                   break deleteProcessing;
                 }
@@ -6230,8 +6136,9 @@
               if (! clientConnection.hasPrivilege(Privilege.PROXIED_AUTH,
                   localOp))
               {
-                int msgID = MSGID_PROXYAUTH_INSUFFICIENT_PRIVILEGES;
-                localOp.appendErrorMessage(getMessage(msgID));
+
+                localOp.appendErrorMessage(
+                        ERR_PROXYAUTH_INSUFFICIENT_PRIVILEGES.get());
                 localOp.setResultCode(ResultCode.AUTHORIZATION_DENIED);
                 break deleteProcessing;
               }
@@ -6256,7 +6163,7 @@
                   }
 
                   localOp.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  localOp.appendErrorMessage(le.getMessage());
+                  localOp.appendErrorMessage(le.getMessageObject());
 
                   break deleteProcessing;
                 }
@@ -6276,7 +6183,7 @@
                 }
 
                 localOp.setResultCode(de.getResultCode());
-                localOp.appendErrorMessage(de.getErrorMessage());
+                localOp.appendErrorMessage(de.getMessageObject());
 
                 break deleteProcessing;
               }
@@ -6298,8 +6205,8 @@
               if (! clientConnection.hasPrivilege(Privilege.PROXIED_AUTH,
                   localOp))
               {
-                int msgID = MSGID_PROXYAUTH_INSUFFICIENT_PRIVILEGES;
-                localOp.appendErrorMessage(getMessage(msgID));
+                localOp.appendErrorMessage(
+                        ERR_PROXYAUTH_INSUFFICIENT_PRIVILEGES.get());
                 localOp.setResultCode(ResultCode.AUTHORIZATION_DENIED);
                 break deleteProcessing;
               }
@@ -6324,7 +6231,7 @@
                   }
 
                   localOp.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  localOp.appendErrorMessage(le.getMessage());
+                  localOp.appendErrorMessage(le.getMessageObject());
 
                   break deleteProcessing;
                 }
@@ -6344,7 +6251,7 @@
                 }
 
                 localOp.setResultCode(de.getResultCode());
-                localOp.appendErrorMessage(de.getErrorMessage());
+                localOp.appendErrorMessage(de.getMessageObject());
 
                 break deleteProcessing;
               }
@@ -6369,10 +6276,10 @@
                 localOp.setResultCode(
                     ResultCode.UNAVAILABLE_CRITICAL_EXTENSION);
 
-                int msgID = MSGID_DELETE_UNSUPPORTED_CRITICAL_CONTROL;
-                localOp.appendErrorMessage(getMessage(msgID,
-                                              String.valueOf(entryDN),
-                                              oid));
+                localOp.appendErrorMessage(
+                        ERR_DELETE_UNSUPPORTED_CRITICAL_CONTROL.get(
+                                String.valueOf(entryDN),
+                                oid));
 
                 break deleteProcessing;
               }
@@ -6391,9 +6298,9 @@
             .getAccessControlHandler().isAllowed(localOp) == false) {
           localOp.setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
 
-          int msgID = MSGID_DELETE_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS;
-          localOp.appendErrorMessage(getMessage(msgID,
-              String.valueOf(entryDN)));
+          localOp.appendErrorMessage(
+                  ERR_DELETE_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS.get(
+                          String.valueOf(entryDN)));
 
           skipPostOperation = true;
           break deleteProcessing;
@@ -6418,8 +6325,7 @@
             // and result and return.
             localOp.setResultCode(ResultCode.CANCELED);
 
-            int msgID = MSGID_CANCELED_BY_PREOP_DISCONNECT;
-            localOp.appendErrorMessage(getMessage(msgID));
+            localOp.appendErrorMessage(ERR_CANCELED_BY_PREOP_DISCONNECT.get());
 
             localOp.setProcessingStopTime();
             return;
@@ -6448,8 +6354,8 @@
         if (backend == null)
         {
           localOp.setResultCode(ResultCode.NO_SUCH_OBJECT);
-          localOp.appendErrorMessage(getMessage(MSGID_DELETE_NO_SUCH_ENTRY,
-                                        String.valueOf(entryDN)));
+          localOp.appendErrorMessage(
+                  ERR_DELETE_NO_SUCH_ENTRY.get(String.valueOf(entryDN)));
           break deleteProcessing;
         }
 
@@ -6462,9 +6368,8 @@
           {
             case DISABLED:
               localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-              localOp.appendErrorMessage(getMessage(
-                                            MSGID_DELETE_SERVER_READONLY,
-                                            String.valueOf(entryDN)));
+              localOp.appendErrorMessage(
+                      ERR_DELETE_SERVER_READONLY.get(String.valueOf(entryDN)));
               break deleteProcessing;
 
             case INTERNAL_ONLY:
@@ -6472,9 +6377,9 @@
                   localOp.isSynchronizationOperation()))
               {
                 localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-                localOp.appendErrorMessage(getMessage(
-                                              MSGID_DELETE_SERVER_READONLY,
-                                              String.valueOf(entryDN)));
+                localOp.appendErrorMessage(
+                        ERR_DELETE_SERVER_READONLY.get(
+                                String.valueOf(entryDN)));
                 break deleteProcessing;
               }
           }
@@ -6483,9 +6388,8 @@
           {
             case DISABLED:
               localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-              localOp.appendErrorMessage(getMessage(
-                                            MSGID_DELETE_BACKEND_READONLY,
-                                            String.valueOf(entryDN)));
+              localOp.appendErrorMessage(
+                      ERR_DELETE_BACKEND_READONLY.get(String.valueOf(entryDN)));
               break deleteProcessing;
 
             case INTERNAL_ONLY:
@@ -6493,9 +6397,9 @@
                   localOp.isSynchronizationOperation()))
               {
                 localOp.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-                localOp.appendErrorMessage(getMessage(
-                                              MSGID_DELETE_BACKEND_READONLY,
-                                              String.valueOf(entryDN)));
+                localOp.appendErrorMessage(
+                        ERR_DELETE_BACKEND_READONLY.get(
+                                String.valueOf(entryDN)));
                 break deleteProcessing;
               }
           }
@@ -6516,10 +6420,9 @@
             if (dn.isDescendantOf(entryDN))
             {
               localOp.setResultCode(ResultCode.NOT_ALLOWED_ON_NONLEAF);
-              localOp.appendErrorMessage(getMessage(
-                                            MSGID_DELETE_HAS_SUB_BACKEND,
-                                            String.valueOf(entryDN),
-                                            String.valueOf(dn)));
+              localOp.appendErrorMessage(ERR_DELETE_HAS_SUB_BACKEND.get(
+                      String.valueOf(entryDN),
+                      String.valueOf(dn)));
               break deleteProcessing;
             }
           }
@@ -6531,7 +6434,7 @@
         {
           if (noOp)
           {
-            localOp.appendErrorMessage(getMessage(MSGID_DELETE_NOOP));
+            localOp.appendErrorMessage(INFO_DELETE_NOOP.get());
 
             localOp.setResultCode(ResultCode.NO_OPERATION);
           }
@@ -6556,12 +6459,9 @@
                   TRACER.debugCaught(DebugLogLevel.ERROR, de);
                 }
 
-                logError(ErrorLogCategory.SYNCHRONIZATION,
-                         ErrorLogSeverity.SEVERE_ERROR,
-                         MSGID_DELETE_SYNCH_PREOP_FAILED,
-                         localOp.getConnectionID(),
-                         localOp.getOperationID(),
-                         getExceptionMessage(de));
+                logError(ERR_DELETE_SYNCH_PREOP_FAILED.
+                    get(localOp.getConnectionID(), localOp.getOperationID(),
+                        getExceptionMessage(de)));
 
                 localOp.setResponseData(de);
                 break deleteProcessing;
@@ -6636,7 +6536,7 @@
           }
 
           localOp.setResultCode(de.getResultCode());
-          localOp.appendErrorMessage(de.getErrorMessage());
+          localOp.appendErrorMessage(de.getMessageObject());
           localOp.setMatchedDN(de.getMatchedDN());
           localOp.setReferralURLs(de.getReferralURLs());
 
@@ -6654,7 +6554,7 @@
           localOp.setCancelResult(cancelResult);
           localOp.setResultCode(cancelResult.getResultCode());
 
-          String message = coe.getMessage();
+          Message message = coe.getMessageObject();
           if ((message != null) && (message.length() > 0))
           {
             localOp.appendErrorMessage(message);
@@ -6681,12 +6581,9 @@
               TRACER.debugCaught(DebugLogLevel.ERROR, de);
             }
 
-            logError(ErrorLogCategory.SYNCHRONIZATION,
-                     ErrorLogSeverity.SEVERE_ERROR,
-                     MSGID_DELETE_SYNCH_POSTOP_FAILED,
-                     localOp.getConnectionID(),
-                     localOp.getOperationID(),
-                     getExceptionMessage(de));
+            logError(ERR_DELETE_SYNCH_POSTOP_FAILED.
+                get(localOp.getConnectionID(), localOp.getOperationID(),
+                    getExceptionMessage(de)));
 
             localOp.setResponseData(de);
             break;
@@ -6709,8 +6606,7 @@
       {
         localOp.setResultCode(ResultCode.CANCELED);
 
-        int msgID = MSGID_CANCELED_BY_POSTOP_DISCONNECT;
-        localOp.appendErrorMessage(getMessage(msgID));
+        localOp.appendErrorMessage(ERR_CANCELED_BY_POSTOP_DISCONNECT.get());
 
         localOp.setProcessingStopTime();
         return;
@@ -6737,10 +6633,9 @@
             TRACER.debugCaught(DebugLogLevel.ERROR, e);
           }
 
-          int    msgID   = MSGID_DELETE_ERROR_NOTIFYING_CHANGE_LISTENER;
-          String message = getMessage(msgID, getExceptionMessage(e));
-          logError(ErrorLogCategory.CORE_SERVER, ErrorLogSeverity.SEVERE_ERROR,
-                   message, msgID);
+          Message message = ERR_DELETE_ERROR_NOTIFYING_CHANGE_LISTENER.get(
+              getExceptionMessage(e));
+          logError(message);
         }
       }
     }
@@ -6807,8 +6702,8 @@
       if (DirectoryServer.getConfigHandler().handlesEntry(entryDN) &&
           (! clientConnection.hasPrivilege(Privilege.CONFIG_READ, localOp)))
       {
-        int msgID = MSGID_COMPARE_CONFIG_INSUFFICIENT_PRIVILEGES;
-        localOp.appendErrorMessage(getMessage(msgID));
+        localOp.appendErrorMessage(
+                ERR_COMPARE_CONFIG_INSUFFICIENT_PRIVILEGES.get());
         localOp.setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
         skipPostOperation = true;
         break compareProcessing;
@@ -6835,8 +6730,8 @@
 
       if (readLock == null)
       {
-        int    msgID   = MSGID_COMPARE_CANNOT_LOCK_ENTRY;
-        String message = getMessage(msgID, String.valueOf(entryDN));
+        Message message = ERR_COMPARE_CANNOT_LOCK_ENTRY.get(
+                String.valueOf(entryDN));
 
         localOp.setResultCode(DirectoryServer.getServerErrorResultCode());
         localOp.appendErrorMessage(message);
@@ -6856,8 +6751,8 @@
           if (entry == null)
           {
             localOp.setResultCode(ResultCode.NO_SUCH_OBJECT);
-            localOp.appendErrorMessage(getMessage(MSGID_COMPARE_NO_SUCH_ENTRY,
-                                          String.valueOf(entryDN)));
+            localOp.appendErrorMessage(
+                    ERR_COMPARE_NO_SUCH_ENTRY.get(String.valueOf(entryDN)));
 
             // See if one of the entry's ancestors exists.
             DN parentDN = entryDN.getParentDNInSuffix();
@@ -6894,7 +6789,7 @@
           }
 
           localOp.setResultCode(de.getResultCode());
-          localOp.appendErrorMessage(de.getErrorMessage());
+          localOp.appendErrorMessage(de.getMessageObject());
           break compareProcessing;
         }
 
@@ -6913,8 +6808,9 @@
                     isAllowed(entryDN, localOp, c))
             {
               localOp.setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
-              int msgID = MSGID_CONTROL_INSUFFICIENT_ACCESS_RIGHTS;
-              localOp.appendErrorMessage(getMessage(msgID, oid));
+
+              localOp.appendErrorMessage(
+                      ERR_CONTROL_INSUFFICIENT_ACCESS_RIGHTS.get(oid));
               skipPostOperation = true;
               break compareProcessing;
             }
@@ -6941,7 +6837,7 @@
                   }
 
                   localOp.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  localOp.appendErrorMessage(le.getMessage());
+                  localOp.appendErrorMessage(le.getMessageObject());
 
                   break compareProcessing;
                 }
@@ -6957,8 +6853,8 @@
                   localOp.setResultCode(ResultCode.ASSERTION_FAILED);
 
                   localOp.appendErrorMessage(
-                      getMessage(MSGID_COMPARE_ASSERTION_FAILED,
-                      String.valueOf(entryDN)));
+                      ERR_COMPARE_ASSERTION_FAILED.get(
+                              String.valueOf(entryDN)));
 
                   break compareProcessing;
                 }
@@ -6972,10 +6868,10 @@
 
                 localOp.setResultCode(ResultCode.PROTOCOL_ERROR);
 
-                int msgID = MSGID_COMPARE_CANNOT_PROCESS_ASSERTION_FILTER;
                 localOp.appendErrorMessage(
-                    getMessage(msgID, String.valueOf(entryDN),
-                    de.getErrorMessage()));
+                    ERR_COMPARE_CANNOT_PROCESS_ASSERTION_FILTER.get(
+                            String.valueOf(entryDN),
+                            de.getMessageObject()));
 
                 break compareProcessing;
               }
@@ -6987,8 +6883,8 @@
               if (! clientConnection.hasPrivilege(
                        Privilege.PROXIED_AUTH, localOp))
               {
-                int msgID = MSGID_PROXYAUTH_INSUFFICIENT_PRIVILEGES;
-                localOp.appendErrorMessage(getMessage(msgID));
+                localOp.appendErrorMessage(
+                        ERR_PROXYAUTH_INSUFFICIENT_PRIVILEGES.get());
                 localOp.setResultCode(ResultCode.AUTHORIZATION_DENIED);
                 break compareProcessing;
               }
@@ -7013,7 +6909,7 @@
                   }
 
                   localOp.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  localOp.appendErrorMessage(le.getMessage());
+                  localOp.appendErrorMessage(le.getMessageObject());
 
                   break compareProcessing;
                 }
@@ -7033,7 +6929,7 @@
                 }
 
                 localOp.setResultCode(de.getResultCode());
-                localOp.appendErrorMessage(de.getErrorMessage());
+                localOp.appendErrorMessage(de.getMessageObject());
 
                 break compareProcessing;
               }
@@ -7055,8 +6951,8 @@
               if (! clientConnection.hasPrivilege(
                        Privilege.PROXIED_AUTH, localOp))
               {
-                int msgID = MSGID_PROXYAUTH_INSUFFICIENT_PRIVILEGES;
-                localOp.appendErrorMessage(getMessage(msgID));
+                localOp.appendErrorMessage(
+                        ERR_PROXYAUTH_INSUFFICIENT_PRIVILEGES.get());
                 localOp.setResultCode(ResultCode.AUTHORIZATION_DENIED);
                 break compareProcessing;
               }
@@ -7081,7 +6977,7 @@
                   }
 
                   localOp.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  localOp.appendErrorMessage(le.getMessage());
+                  localOp.appendErrorMessage(le.getMessageObject());
 
                   break compareProcessing;
                 }
@@ -7101,7 +6997,7 @@
                 }
 
                 localOp.setResultCode(de.getResultCode());
-                localOp.appendErrorMessage(de.getErrorMessage());
+                localOp.appendErrorMessage(de.getMessageObject());
 
                 break compareProcessing;
               }
@@ -7126,9 +7022,9 @@
                 localOp.setResultCode(
                     ResultCode.UNAVAILABLE_CRITICAL_EXTENSION);
 
-                int msgID = MSGID_COMPARE_UNSUPPORTED_CRITICAL_CONTROL;
                 localOp.appendErrorMessage(
-                    getMessage(msgID, String.valueOf(entryDN), oid));
+                    ERR_COMPARE_UNSUPPORTED_CRITICAL_CONTROL.get(
+                            String.valueOf(entryDN), oid));
 
                 break compareProcessing;
               }
@@ -7150,9 +7046,9 @@
             .getAccessControlHandler().isAllowed(localOp) == false) {
           localOp.setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
 
-          int msgID = MSGID_COMPARE_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS;
           localOp.appendErrorMessage(
-              getMessage(msgID, String.valueOf(entryDN)));
+              ERR_COMPARE_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS.get(
+                      String.valueOf(entryDN)));
 
           skipPostOperation = true;
           break compareProcessing;
@@ -7174,8 +7070,7 @@
           // result and return.
           localOp.setResultCode(ResultCode.CANCELED);
 
-          int msgID = MSGID_CANCELED_BY_PREOP_DISCONNECT;
-          localOp.appendErrorMessage(getMessage(msgID));
+          localOp.appendErrorMessage(ERR_CANCELED_BY_PREOP_DISCONNECT.get());
 
           return;
         }
@@ -7240,14 +7135,14 @@
           localOp.setResultCode(ResultCode.NO_SUCH_ATTRIBUTE);
           if (options == null)
           {
-            localOp.appendErrorMessage(getMessage(MSGID_COMPARE_OP_NO_SUCH_ATTR,
-                                          String.valueOf(entryDN), baseName));
+            localOp.appendErrorMessage(WARN_COMPARE_OP_NO_SUCH_ATTR.get(
+                    String.valueOf(entryDN), baseName));
           }
           else
           {
-            localOp.appendErrorMessage(getMessage(
-                                    MSGID_COMPARE_OP_NO_SUCH_ATTR_WITH_OPTIONS,
-                                    String.valueOf(entryDN), baseName));
+            localOp.appendErrorMessage(
+                    WARN_COMPARE_OP_NO_SUCH_ATTR_WITH_OPTIONS.get(
+                            String.valueOf(entryDN), baseName));
           }
         }
         else
@@ -7299,8 +7194,7 @@
       {
         localOp.setResultCode(ResultCode.CANCELED);
 
-        int msgID = MSGID_CANCELED_BY_POSTOP_DISCONNECT;
-        localOp.appendErrorMessage(getMessage(msgID));
+        localOp.appendErrorMessage(ERR_CANCELED_BY_POSTOP_DISCONNECT.get());
 
         return;
       }
@@ -7378,8 +7272,7 @@
       if ((parentDN == null) || parentDN.isNullDN())
       {
         op.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-        op.appendErrorMessage(getMessage(MSGID_MODDN_NO_PARENT,
-                                      String.valueOf(entryDN)));
+        op.appendErrorMessage(ERR_MODDN_NO_PARENT.get(String.valueOf(entryDN)));
         break modifyDNProcessing;
       }
 
@@ -7391,9 +7284,8 @@
       if (currentBackend == null)
       {
         op.setResultCode(ResultCode.NO_SUCH_OBJECT);
-        op.appendErrorMessage(getMessage(
-                                      MSGID_MODDN_NO_BACKEND_FOR_CURRENT_ENTRY,
-                                      String.valueOf(entryDN)));
+        op.appendErrorMessage(ERR_MODDN_NO_BACKEND_FOR_CURRENT_ENTRY.get(
+                String.valueOf(entryDN)));
         break modifyDNProcessing;
       }
 
@@ -7401,17 +7293,17 @@
       if (newBackend == null)
       {
         op.setResultCode(ResultCode.NO_SUCH_OBJECT);
-        op.appendErrorMessage(getMessage(MSGID_MODDN_NO_BACKEND_FOR_NEW_ENTRY,
-                                      String.valueOf(entryDN),
+        op.appendErrorMessage(ERR_MODDN_NO_BACKEND_FOR_NEW_ENTRY.get(
+                String.valueOf(entryDN),
                                       String.valueOf(newDN)));
         break modifyDNProcessing;
       }
       else if (! currentBackend.equals(newBackend))
       {
         op.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-        op.appendErrorMessage(getMessage(MSGID_MODDN_DIFFERENT_BACKENDS,
-                                      String.valueOf(entryDN),
-                                      String.valueOf(newDN)));
+        op.appendErrorMessage(ERR_MODDN_DIFFERENT_BACKENDS.get(
+                String.valueOf(entryDN),
+                String.valueOf(newDN)));
         break modifyDNProcessing;
       }
 
@@ -7437,8 +7329,8 @@
       if (currentLock == null)
       {
         op.setResultCode(DirectoryServer.getServerErrorResultCode());
-        op.appendErrorMessage(getMessage(MSGID_MODDN_CANNOT_LOCK_CURRENT_DN,
-                                      String.valueOf(entryDN)));
+        op.appendErrorMessage(ERR_MODDN_CANNOT_LOCK_CURRENT_DN.get(
+                String.valueOf(entryDN)));
 
         skipPostOperation = true;
         break modifyDNProcessing;
@@ -7471,10 +7363,10 @@
         }
 
         op.setResultCode(DirectoryServer.getServerErrorResultCode());
-        op.appendErrorMessage(getMessage(MSGID_MODDN_EXCEPTION_LOCKING_NEW_DN,
-                                      String.valueOf(entryDN),
-                                      String.valueOf(newDN),
-                                      getExceptionMessage(e)));
+        op.appendErrorMessage(ERR_MODDN_EXCEPTION_LOCKING_NEW_DN.get(
+                String.valueOf(entryDN),
+                String.valueOf(newDN),
+                getExceptionMessage(e)));
 
         skipPostOperation = true;
         break modifyDNProcessing;
@@ -7485,9 +7377,9 @@
         LockManager.unlock(entryDN, currentLock);
 
         op.setResultCode(DirectoryServer.getServerErrorResultCode());
-        op.appendErrorMessage(getMessage(MSGID_MODDN_CANNOT_LOCK_NEW_DN,
-                                      String.valueOf(entryDN),
-                                      String.valueOf(newDN)));
+        op.appendErrorMessage(ERR_MODDN_CANNOT_LOCK_NEW_DN.get(
+                String.valueOf(entryDN),
+                String.valueOf(newDN)));
 
         skipPostOperation = true;
         break modifyDNProcessing;
@@ -7518,7 +7410,7 @@
           }
 
           op.setResultCode(de.getResultCode());
-          op.appendErrorMessage(de.getErrorMessage());
+          op.appendErrorMessage(de.getMessageObject());
           op.setMatchedDN(de.getMatchedDN());
           op.setReferralURLs(de.getReferralURLs());
 
@@ -7552,8 +7444,8 @@
           }
 
           op.setResultCode(ResultCode.NO_SUCH_OBJECT);
-          op.appendErrorMessage(getMessage(MSGID_MODDN_NO_CURRENT_ENTRY,
-                                        String.valueOf(entryDN)));
+          op.appendErrorMessage(ERR_MODDN_NO_CURRENT_ENTRY.get(
+                  String.valueOf(entryDN)));
 
           break modifyDNProcessing;
         }
@@ -7580,11 +7472,9 @@
               TRACER.debugCaught(DebugLogLevel.ERROR, de);
             }
 
-            logError(ErrorLogCategory.SYNCHRONIZATION,
-                     ErrorLogSeverity.SEVERE_ERROR,
-                     MSGID_MODDN_SYNCH_CONFLICT_RESOLUTION_FAILED,
-                     op.getConnectionID(), op.getOperationID(),
-                     getExceptionMessage(de));
+            logError(ERR_MODDN_SYNCH_CONFLICT_RESOLUTION_FAILED.
+                get(op.getConnectionID(), op.getOperationID(),
+                    getExceptionMessage(de)));
 
             op.setResponseData(de);
             break modifyDNProcessing;
@@ -7609,8 +7499,9 @@
                      getAccessControlHandler().isAllowed(entryDN,  op, c))
             {
               op.setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
-              int msgID = MSGID_CONTROL_INSUFFICIENT_ACCESS_RIGHTS;
-              op.appendErrorMessage(getMessage(msgID, oid));
+
+              op.appendErrorMessage(
+                      ERR_CONTROL_INSUFFICIENT_ACCESS_RIGHTS.get(oid));
               skipPostOperation = true;
               break modifyDNProcessing;
             }
@@ -7637,7 +7528,7 @@
                   }
 
                   op.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  op.appendErrorMessage(le.getMessage());
+                  op.appendErrorMessage(le.getMessageObject());
 
                   break modifyDNProcessing;
                 }
@@ -7652,8 +7543,8 @@
                 {
                   op.setResultCode(ResultCode.ASSERTION_FAILED);
 
-                  op.appendErrorMessage(getMessage(MSGID_MODDN_ASSERTION_FAILED,
-                                                String.valueOf(entryDN)));
+                  op.appendErrorMessage(ERR_MODDN_ASSERTION_FAILED.get(
+                          String.valueOf(entryDN)));
 
                   break modifyDNProcessing;
                 }
@@ -7667,9 +7558,10 @@
 
                 op.setResultCode(ResultCode.PROTOCOL_ERROR);
 
-                int msgID = MSGID_MODDN_CANNOT_PROCESS_ASSERTION_FILTER;
-                op.appendErrorMessage(getMessage(msgID, String.valueOf(entryDN),
-                                              de.getErrorMessage()));
+                op.appendErrorMessage(
+                        ERR_MODDN_CANNOT_PROCESS_ASSERTION_FILTER.get(
+                                String.valueOf(entryDN),
+                                de.getMessageObject()));
 
                 break modifyDNProcessing;
               }
@@ -7699,7 +7591,7 @@
                   }
 
                   op.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  op.appendErrorMessage(le.getMessage());
+                  op.appendErrorMessage(le.getMessageObject());
 
                   break modifyDNProcessing;
                 }
@@ -7726,7 +7618,7 @@
                   }
 
                   op.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  op.appendErrorMessage(le.getMessage());
+                  op.appendErrorMessage(le.getMessageObject());
 
                   break modifyDNProcessing;
                 }
@@ -7738,8 +7630,9 @@
               // be able to use this control.
               if (! clientConnection.hasPrivilege(Privilege.PROXIED_AUTH, op))
               {
-                int msgID = MSGID_PROXYAUTH_INSUFFICIENT_PRIVILEGES;
-                op.appendErrorMessage(getMessage(msgID));
+
+                op.appendErrorMessage(
+                        ERR_PROXYAUTH_INSUFFICIENT_PRIVILEGES.get());
                 op.setResultCode(ResultCode.AUTHORIZATION_DENIED);
                 break modifyDNProcessing;
               }
@@ -7764,7 +7657,7 @@
                   }
 
                   op.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  op.appendErrorMessage(le.getMessage());
+                  op.appendErrorMessage(le.getMessageObject());
 
                   break modifyDNProcessing;
                 }
@@ -7784,7 +7677,7 @@
                 }
 
                 op.setResultCode(de.getResultCode());
-                op.appendErrorMessage(de.getErrorMessage());
+                op.appendErrorMessage(de.getMessageObject());
 
                 break modifyDNProcessing;
               }
@@ -7805,8 +7698,9 @@
               // be able to use this control.
               if (! clientConnection.hasPrivilege(Privilege.PROXIED_AUTH, op))
               {
-                int msgID = MSGID_PROXYAUTH_INSUFFICIENT_PRIVILEGES;
-                op.appendErrorMessage(getMessage(msgID));
+
+                op.appendErrorMessage(
+                        ERR_PROXYAUTH_INSUFFICIENT_PRIVILEGES.get());
                 op.setResultCode(ResultCode.AUTHORIZATION_DENIED);
                 break modifyDNProcessing;
               }
@@ -7831,7 +7725,7 @@
                   }
 
                   op.setResultCode(ResultCode.valueOf(le.getResultCode()));
-                  op.appendErrorMessage(le.getMessage());
+                  op.appendErrorMessage(le.getMessageObject());
 
                   break modifyDNProcessing;
                 }
@@ -7851,7 +7745,7 @@
                 }
 
                 op.setResultCode(de.getResultCode());
-                op.appendErrorMessage(de.getErrorMessage());
+                op.appendErrorMessage(de.getMessageObject());
 
                 break modifyDNProcessing;
               }
@@ -7875,9 +7769,11 @@
               {
                 op.setResultCode(ResultCode.UNAVAILABLE_CRITICAL_EXTENSION);
 
-                int msgID = MSGID_MODDN_UNSUPPORTED_CRITICAL_CONTROL;
-                op.appendErrorMessage(getMessage(msgID, String.valueOf(entryDN),
-                                              oid));
+
+                op.appendErrorMessage(
+                        ERR_MODDN_UNSUPPORTED_CRITICAL_CONTROL.get(
+                                String.valueOf(entryDN),
+                                oid));
 
                 break modifyDNProcessing;
               }
@@ -7900,8 +7796,8 @@
             .getAccessControlHandler().isAllowed(op) == false) {
           op.setResultCode(ResultCode.INSUFFICIENT_ACCESS_RIGHTS);
 
-          int msgID = MSGID_MODDN_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS;
-          op.appendErrorMessage(getMessage(msgID, String.valueOf(entryDN)));
+          op.appendErrorMessage(ERR_MODDN_AUTHZ_INSUFFICIENT_ACCESS_RIGHTS.get(
+                  String.valueOf(entryDN)));
 
           skipPostOperation = true;
           break modifyDNProcessing;
@@ -7942,9 +7838,8 @@
               {
                 op.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-                int msgID = MSGID_MODDN_OLD_RDN_ATTR_IS_NO_USER_MOD;
-                op.appendErrorMessage(getMessage(msgID, String.valueOf(entryDN),
-                                              a.getName()));
+                op.appendErrorMessage(ERR_MODDN_OLD_RDN_ATTR_IS_NO_USER_MOD.get(
+                        String.valueOf(entryDN), a.getName()));
                 break modifyDNProcessing;
               }
             }
@@ -7988,9 +7883,8 @@
               {
                 op.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
 
-                int msgID = MSGID_MODDN_NEW_RDN_ATTR_IS_NO_USER_MOD;
-                op.appendErrorMessage(getMessage(msgID, String.valueOf(entryDN),
-                                              a.getName()));
+                op.appendErrorMessage(ERR_MODDN_NEW_RDN_ATTR_IS_NO_USER_MOD.get(
+                        String.valueOf(entryDN), a.getName()));
                 break modifyDNProcessing;
               }
             }
@@ -8007,14 +7901,14 @@
         if ((DirectoryServer.checkSchema()) &&
             (!op.isSynchronizationOperation()) )
         {
-          StringBuilder invalidReason = new StringBuilder();
+          MessageBuilder invalidReason = new MessageBuilder();
           if (! newEntry.conformsToSchema(null, false, true, true,
                                           invalidReason))
           {
             op.setResultCode(ResultCode.OBJECTCLASS_VIOLATION);
-            op.appendErrorMessage(getMessage(MSGID_MODDN_VIOLATES_SCHEMA,
-                                          String.valueOf(entryDN),
-                                          String.valueOf(invalidReason)));
+            op.appendErrorMessage(ERR_MODDN_VIOLATES_SCHEMA.get(
+                    String.valueOf(entryDN),
+                    String.valueOf(invalidReason)));
             break modifyDNProcessing;
           }
 
@@ -8024,10 +7918,9 @@
             if (at.isObsolete())
             {
               op.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
-              op.appendErrorMessage(getMessage(
-                                            MSGID_MODDN_NEWRDN_ATTR_IS_OBSOLETE,
-                                            String.valueOf(entryDN),
-                                            at.getNameOrOID()));
+              op.appendErrorMessage(ERR_MODDN_NEWRDN_ATTR_IS_OBSOLETE.get(
+                      String.valueOf(entryDN),
+                      at.getNameOrOID()));
               break modifyDNProcessing;
             }
           }
@@ -8059,8 +7952,8 @@
             // and result and return.
             op.setResultCode(ResultCode.CANCELED);
 
-            int msgID = MSGID_CANCELED_BY_PREOP_DISCONNECT;
-            op.appendErrorMessage(getMessage(msgID));
+
+            op.appendErrorMessage(ERR_CANCELED_BY_PREOP_DISCONNECT.get());
             return;
           }
           else if (preOpResult.sendResponseImmediately())
@@ -8109,10 +8002,8 @@
                 {
                   op.setResultCode(ResultCode.NO_SUCH_ATTRIBUTE);
 
-                  int msgID = MSGID_MODDN_PREOP_INCREMENT_NO_ATTR;
-                  op.appendErrorMessage(getMessage(msgID,
-                                                String.valueOf(entryDN),
-                                                a.getName()));
+                  op.appendErrorMessage(ERR_MODDN_PREOP_INCREMENT_NO_ATTR.get(
+                          String.valueOf(entryDN), a.getName()));
 
                   break modifyDNProcessing;
                 }
@@ -8120,10 +8011,10 @@
                 {
                   op.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
 
-                  int msgID = MSGID_MODDN_PREOP_INCREMENT_MULTIPLE_VALUES;
-                  op.appendErrorMessage(getMessage(msgID,
-                                                String.valueOf(entryDN),
-                                                a.getName()));
+                  op.appendErrorMessage(
+                          ERR_MODDN_PREOP_INCREMENT_MULTIPLE_VALUES.get(
+                                  String.valueOf(entryDN),
+                                  a.getName()));
 
                   break modifyDNProcessing;
                 }
@@ -8134,10 +8025,9 @@
                 {
                   op.setResultCode(ResultCode.NO_SUCH_ATTRIBUTE);
 
-                  int msgID = MSGID_MODDN_PREOP_INCREMENT_NO_ATTR;
-                  op.appendErrorMessage(getMessage(msgID,
-                                                String.valueOf(entryDN),
-                                                a.getName()));
+                  op.appendErrorMessage(ERR_MODDN_PREOP_INCREMENT_NO_ATTR.get(
+                          String.valueOf(entryDN),
+                          a.getName()));
 
                   break modifyDNProcessing;
                 }
@@ -8145,10 +8035,10 @@
                 {
                   op.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
 
-                  int msgID = MSGID_MODDN_PREOP_INCREMENT_MULTIPLE_VALUES;
-                  op.appendErrorMessage(getMessage(msgID,
-                                                String.valueOf(entryDN),
-                                                a.getName()));
+                  op.appendErrorMessage(
+                          ERR_MODDN_PREOP_INCREMENT_MULTIPLE_VALUES.get(
+                                  String.valueOf(entryDN),
+                                  a.getName()));
 
                   break modifyDNProcessing;
                 }
@@ -8168,10 +8058,10 @@
 
                   op.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
 
-                  int msgID = MSGID_MODDN_PREOP_INCREMENT_VALUE_NOT_INTEGER;
-                  op.appendErrorMessage(getMessage(msgID,
-                                                String.valueOf(entryDN),
-                                                a.getName()));
+                  op.appendErrorMessage(
+                          ERR_MODDN_PREOP_INCREMENT_VALUE_NOT_INTEGER.get(
+                                  String.valueOf(entryDN),
+                                  a.getName()));
 
                   break modifyDNProcessing;
                 }
@@ -8181,10 +8071,10 @@
                 {
                   op.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
 
-                  int msgID = MSGID_MODDN_PREOP_INCREMENT_NO_AMOUNT;
-                  op.appendErrorMessage(getMessage(msgID,
-                                                String.valueOf(entryDN),
-                                                a.getName()));
+                  op.appendErrorMessage(
+                          ERR_MODDN_PREOP_INCREMENT_NO_AMOUNT.get(
+                                  String.valueOf(entryDN),
+                                  a.getName()));
 
                   break modifyDNProcessing;
                 }
@@ -8192,10 +8082,10 @@
                 {
                   op.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
 
-                  int msgID = MSGID_MODDN_PREOP_INCREMENT_MULTIPLE_AMOUNTS;
-                  op.appendErrorMessage(getMessage(msgID,
-                                                String.valueOf(entryDN),
-                                                a.getName()));
+                  op.appendErrorMessage(
+                          ERR_MODDN_PREOP_INCREMENT_MULTIPLE_AMOUNTS.get(
+                                  String.valueOf(entryDN),
+                                  a.getName()));
 
                   break modifyDNProcessing;
                 }
@@ -8215,10 +8105,10 @@
 
                   op.setResultCode(ResultCode.CONSTRAINT_VIOLATION);
 
-                  int msgID = MSGID_MODDN_PREOP_INCREMENT_AMOUNT_NOT_INTEGER;
-                  op.appendErrorMessage(getMessage(msgID,
-                                                String.valueOf(entryDN),
-                                                a.getName()));
+                  op.appendErrorMessage(
+                          ERR_MODDN_PREOP_INCREMENT_AMOUNT_NOT_INTEGER.get(
+                                  String.valueOf(entryDN),
+                                  a.getName()));
 
                   break modifyDNProcessing;
                 }
@@ -8245,16 +8135,15 @@
           // schema.
           if (DirectoryServer.checkSchema())
           {
-            StringBuilder invalidReason = new StringBuilder();
+            MessageBuilder invalidReason = new MessageBuilder();
             if (! newEntry.conformsToSchema(null, false, true, true,
                                             invalidReason))
             {
               op.setResultCode(ResultCode.OBJECTCLASS_VIOLATION);
 
-              op.appendErrorMessage(getMessage(
-                                            MSGID_MODDN_PREOP_VIOLATES_SCHEMA,
-                                            String.valueOf(entryDN),
-                                            String.valueOf(invalidReason)));
+              op.appendErrorMessage(ERR_MODDN_PREOP_VIOLATES_SCHEMA.get(
+                      String.valueOf(entryDN),
+                      String.valueOf(invalidReason)));
               break modifyDNProcessing;
             }
           }
@@ -8281,8 +8170,8 @@
             {
               case DISABLED:
                 op.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-                op.appendErrorMessage(getMessage(MSGID_MODDN_SERVER_READONLY,
-                                              String.valueOf(entryDN)));
+                op.appendErrorMessage(ERR_MODDN_SERVER_READONLY.get(
+                        String.valueOf(entryDN)));
                 break modifyDNProcessing;
 
               case INTERNAL_ONLY:
@@ -8290,8 +8179,8 @@
                     op.isSynchronizationOperation()))
                 {
                   op.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-                  op.appendErrorMessage(getMessage(MSGID_MODDN_SERVER_READONLY,
-                                                String.valueOf(entryDN)));
+                  op.appendErrorMessage(ERR_MODDN_SERVER_READONLY.get(
+                          String.valueOf(entryDN)));
                   break modifyDNProcessing;
                 }
             }
@@ -8300,8 +8189,8 @@
             {
               case DISABLED:
                 op.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-                op.appendErrorMessage(getMessage(MSGID_MODDN_BACKEND_READONLY,
-                                              String.valueOf(entryDN)));
+                op.appendErrorMessage(ERR_MODDN_BACKEND_READONLY.get(
+                        String.valueOf(entryDN)));
                 break modifyDNProcessing;
 
               case INTERNAL_ONLY:
@@ -8309,8 +8198,8 @@
                     op.isSynchronizationOperation()))
                 {
                   op.setResultCode(ResultCode.UNWILLING_TO_PERFORM);
-                  op.appendErrorMessage(getMessage(MSGID_MODDN_BACKEND_READONLY,
-                                                String.valueOf(entryDN)));
+                  op.appendErrorMessage(ERR_MODDN_BACKEND_READONLY.get(
+                          String.valueOf(entryDN)));
                   break modifyDNProcessing;
                 }
             }
@@ -8319,7 +8208,7 @@
 
           if (noOp)
           {
-            op.appendErrorMessage(getMessage(MSGID_MODDN_NOOP));
+            op.appendErrorMessage(INFO_MODDN_NOOP.get());
 
             op.setResultCode(ResultCode.NO_OPERATION);
           }
@@ -8344,10 +8233,9 @@
                   TRACER.debugCaught(DebugLogLevel.ERROR, de);
                 }
 
-                logError(ErrorLogCategory.SYNCHRONIZATION,
-                         ErrorLogSeverity.SEVERE_ERROR,
-                         MSGID_MODDN_SYNCH_PREOP_FAILED, op.getConnectionID(),
-                         op.getOperationID(), getExceptionMessage(de));
+                logError(ERR_MODDN_SYNCH_PREOP_FAILED.
+                    get(op.getConnectionID(), op.getOperationID(),
+                        getExceptionMessage(de)));
 
                 op.setResponseData(de);
                 break modifyDNProcessing;
@@ -8473,7 +8361,7 @@
           }
 
           op.setResultCode(de.getResultCode());
-          op.appendErrorMessage(de.getErrorMessage());
+          op.appendErrorMessage(de.getMessageObject());
           op.setMatchedDN(de.getMatchedDN());
           op.setReferralURLs(de.getReferralURLs());
 
@@ -8491,7 +8379,7 @@
           op.setCancelResult(cancelResult);
           op.setResultCode(cancelResult.getResultCode());
 
-          String message = coe.getMessage();
+          Message message = coe.getMessageObject();
           if ((message != null) && (message.length() > 0))
           {
             op.appendErrorMessage(message);
@@ -8519,10 +8407,9 @@
               TRACER.debugCaught(DebugLogLevel.ERROR, de);
             }
 
-            logError(ErrorLogCategory.SYNCHRONIZATION,
-                     ErrorLogSeverity.SEVERE_ERROR,
-                     MSGID_MODDN_SYNCH_POSTOP_FAILED, op.getConnectionID(),
-                     op.getOperationID(), getExceptionMessage(de));
+            logError(ERR_MODDN_SYNCH_POSTOP_FAILED.
+                get(op.getConnectionID(), op.getOperationID(),
+                    getExceptionMessage(de)));
 
             op.setResponseData(de);
             break;
@@ -8545,8 +8432,8 @@
       {
         op.setResultCode(ResultCode.CANCELED);
 
-        int msgID = MSGID_CANCELED_BY_POSTOP_DISCONNECT;
-        op.appendErrorMessage(getMessage(msgID));
+
+        op.appendErrorMessage(ERR_CANCELED_BY_POSTOP_DISCONNECT.get());
         return;
       }
     }
@@ -8572,10 +8459,9 @@
             TRACER.debugCaught(DebugLogLevel.ERROR, e);
           }
 
-          int    msgID   = MSGID_MODDN_ERROR_NOTIFYING_CHANGE_LISTENER;
-          String message = getMessage(msgID, getExceptionMessage(e));
-          logError(ErrorLogCategory.CORE_SERVER, ErrorLogSeverity.SEVERE_ERROR,
-                   message, msgID);
+          Message message = ERR_MODDN_ERROR_NOTIFYING_CHANGE_LISTENER.get(
+              getExceptionMessage(e));
+          logError(message);
         }
       }
     }

--
Gitblit v1.10.0