diff --git a/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/AbstractEventLogger.java b/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/AbstractEventLogger.java
index ee203d6..5de2844 100644
--- a/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/AbstractEventLogger.java
+++ b/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/AbstractEventLogger.java
@@ -29,9 +29,7 @@
 import org.apache.logging.log4j.catalog.api.plugins.ConstraintPlugins;
 import org.apache.logging.log4j.message.StructuredDataMessage;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 
 import static java.util.Collections.*;
 
@@ -126,8 +124,7 @@
                     missingAttributes.append(name);
                 } else {
                     if (attr.getConstraints() != null && attr.getConstraints().size() > 0) {
-                        Constraint[] constraints = attr.getConstraints().toArray(new Constraint[attr.getConstraints().size()]);
-                        validateConstraints(false, constraints, name, attributes.get(name), errors);
+                        validateConstraints(false, attr.getConstraints(), name, attributes.get(name), errors);
                     }
                 }
             }
@@ -165,8 +162,7 @@
         }
 
         List<String> reqCtxAttrs = catalogManager.getRequiredContextAttributes(eventName, event.getCatalogId());
-
-        if (reqCtxAttrs != null) {
+        if (reqCtxAttrs != null && !reqCtxAttrs.isEmpty()) {
             StringBuilder sb = new StringBuilder();
             for (String attr : reqCtxAttrs) {
                 if (!ThreadContext.containsKey(attr)) {
@@ -181,22 +177,37 @@
                         " is missing required RequestContextMapping values for " + sb.toString());
             }
         }
+
         Map<String, Attribute> reqCtxAttributes = catalogManager.getRequestContextAttributes();
-        for (Map.Entry<String, String> entry : ThreadContext.getImmutableContext().entrySet()) {
+        for (Map.Entry<String, Attribute> entry : reqCtxAttributes.entrySet()) {
+            Attribute attribute = entry.getValue();
+            String attr = entry.getKey();
+            if (attribute.isRequired() && !ThreadContext.containsKey(attr)) {
+                if (errors.length() > 0) {
+                    errors.append(", ");
+                }
+                errors.append(attr);
+            }
+        }
+        if (errors.length() > 0) {
+            throw new AuditException("Event " + eventName +
+                                             " is missing required Thread Context values for " + errors.toString());
+        }
+
+        for (Map.Entry<String, Attribute> entry : reqCtxAttributes.entrySet()) {
             Attribute attribute = reqCtxAttributes.get(entry.getKey());
-            if (attribute == null) {
+            if (!ThreadContext.containsKey(entry.getKey())) {
                 continue;
             }
             Set<Constraint> constraintList = attribute.getConstraints();
             if (constraintList != null && constraintList.size() > 0) {
-                Constraint[] constraints =
-                        attribute.getConstraints().toArray(new Constraint[attribute.getConstraints().size()]);
-                validateConstraints(true, constraints, entry.getKey(), ThreadContext.get(entry.getKey()), errors);
+                validateConstraints(true, constraintList, entry.getKey(), ThreadContext.get(entry.getKey()), errors);
             }
         }
         if (errors.length() > 0) {
             throw new AuditException("Event " + eventName + " has incorrect data in the Thread Context: " + errors.toString());
         }
+
         msg.putAll(attributes);
         try {
             logEvent(msg);
@@ -209,7 +220,7 @@
         }
     }
 
-    private static void validateConstraints(boolean isRequestContext, Constraint[] constraints, String name,
+    private static void validateConstraints(boolean isRequestContext, Collection<Constraint> constraints, String name,
                                             String value, StringBuilder errors) {
         for (Constraint constraint : constraints) {
             constraintPlugins.validateConstraint(isRequestContext, constraint.getConstraintType().getName(), name, value,
diff --git a/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/AuditLoggerTest.java b/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/AuditLoggerTest.java
index 3cfca75..5d925d5 100644
--- a/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/AuditLoggerTest.java
+++ b/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/AuditLoggerTest.java
@@ -77,13 +77,16 @@
     @Before
     public void before() {
         app.clear();
+        ThreadContext.clearMap();
     }
 
     @Test
     public void testAuditLogger() throws Exception {
         auditLogger = buildAuditLogger(catalogReader);
 
+        ThreadContext.put("accountNumber", "12345");
         ThreadContext.put("companyId", "12345");
+        ThreadContext.put("userId", "JohnDoe");
         ThreadContext.put("ipAddress", "127.0.0.1");
         ThreadContext.put("environment", "dev");
         ThreadContext.put("product", "TestProduct");
@@ -110,7 +113,18 @@
     }
 
     @Test(expected = AuditException.class)
-    public void testBadAttribute() throws Exception {
+    public void testMissingRequestContextAttribute() throws Exception {
+        auditLogger = buildAuditLogger(catalogReader);
+
+        Map<String, String> properties = new HashMap<String, String>();
+        properties.put("toAccount", "123456");
+        properties.put("fromAccount", "111111");
+        properties.put("amount", "111.55");
+        auditLogger.logEvent("transfer", properties);
+    }
+
+    @Test(expected = AuditException.class)
+    public void testMissingEventAttribute() throws Exception {
         auditLogger = buildAuditLogger(catalogReader);
 
         ThreadContext.put("companyId", "12345");
diff --git a/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/TransferTest.java b/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/TransferTest.java
index 716bb58..7b1cd47 100644
--- a/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/TransferTest.java
+++ b/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/TransferTest.java
@@ -43,7 +43,7 @@
 public class TransferTest extends BaseEventTest {
 
     @Test(expected = ConstraintValidationException.class)
-    public void testValidationFailure() {
+    public void testValidationFailureForMissingRequestContextAttribute() {
         Transfer transfer = LogEventFactory.getEvent(Transfer.class);
         ThreadContext.put("companyId", "12345");
         ThreadContext.put("ipAddress", "127.0.0.1");
@@ -58,6 +58,23 @@
         fail("Should have thrown an AuditException");
     }
 
+    @Test(expected = ConstraintValidationException.class)
+    public void testValidationFailureForMissingEventAttribute() {
+        Transfer transfer = LogEventFactory.getEvent(Transfer.class);
+        ThreadContext.put("accountNumber", "12345");
+        ThreadContext.put("companyId", "12345");
+        ThreadContext.put("userId", "JohnDoe");
+        ThreadContext.put("ipAddress", "127.0.0.1");
+        ThreadContext.put("environment", "dev");
+        ThreadContext.put("product", "TestProduct");
+        ThreadContext.put("timeZone", "America/Phoenix");
+        ThreadContext.put("loginId", "TestUser");
+        transfer.setToAccount(123456);
+        transfer.setFromAccount(111111);
+        transfer.logEvent();
+        fail("Should have thrown an AuditException");
+    }
+
     @Test
     public void testAuditClass() {
         Transfer transfer = LogEventFactory.getEvent(Transfer.class);
@@ -95,7 +112,7 @@
     }
 
     @Test(expected = ConstraintValidationException.class)
-    public void testAuditLogException() {
+    public void testAuditLogWithMissingRequestContextAttribute() {
         ThreadContext.put("userId", "JohnDoe");
         ThreadContext.put("ipAddress", "127.0.0.1");
         ThreadContext.put("environment", "dev");
@@ -109,6 +126,21 @@
         LogEventFactory.logEvent(Transfer.class, properties);
     }
 
+    @Test(expected = ConstraintValidationException.class)
+    public void testAuditLogWithMissingEventAttribute() {
+        ThreadContext.put("accountNumber", "12345");
+        ThreadContext.put("userId", "JohnDoe");
+        ThreadContext.put("ipAddress", "127.0.0.1");
+        ThreadContext.put("environment", "dev");
+        ThreadContext.put("product", "TestProduct");
+        ThreadContext.put("timeZone", "America/Phoenix");
+        ThreadContext.put("loginId", "TestUser");
+        Map<String, String> properties = new HashMap<>();
+        properties.put("toAccount", "123456");
+        properties.put("fromAccount", "111111");
+        LogEventFactory.logEvent(Transfer.class, properties);
+    }
+
     @Test
     public void testAuditLog() {
         ThreadContext.put("accountNumber", "12345");
