diff --git a/src/main/java/org/opencord/kafka/integrations/AaaKafkaIntegration.java b/src/main/java/org/opencord/kafka/integrations/AaaKafkaIntegration.java
index 34699cb..fda1c9f 100644
--- a/src/main/java/org/opencord/kafka/integrations/AaaKafkaIntegration.java
+++ b/src/main/java/org/opencord/kafka/integrations/AaaKafkaIntegration.java
@@ -105,35 +105,40 @@
     private static final String AUTHENTICATION_STATE = "authenticationState";
 
     // auth stats event params
-    private static final String ACCEPT_RESPONSES_RX = "acceptResponsesRx";
-    private static final String REJECT_RESPONSES_RX = "rejectResponsesRx";
-    private static final String CHALLENGE_RESPONSES_RX = "challengeResponsesRx";
-    private static final String ACCESS_REQUESTS_TX = "accessRequestsTx";
-    private static final String INVALID_VALIDATORS_RX = "invalidValidatorsRx";
+    private static final String RADIUS_ACCEPT_RESPONSES_RX = "radiusAccessAcceptRx";
+    private static final String RADIUS_REJECT_RESPONSES_RX = "radiusRejectResponsesRx";
+    private static final String RADIUS_CHALLENGE_RESPONSES_RX = "radiusAccessChallengeRx";
+    private static final String RADIUS_ACCESS_REQUESTS_TX = "radiusAccessRequestTx";
+    private static final String RADIUS_ACCESS_REQUESTS_IDENTITY_TX = "radiusAccessRequestIdentityTx";
+    private static final String RADIUS_ACCESS_REQUESTS_CHALLENGE_TX = "radiusAccessRequestChallengeTx";
+    private static final String RADIUS_PENDING_REQUESTS = "radiusPendingRequests";
+    private static final String TIMED_OUT_PACKETS = "timedOutPackets";
     private static final String UNKNOWN_TYPE_RX = "unknownTypeRx";
-    private static final String PENDING_REQUESTS = "pendingRequests";
+    private static final String INVALID_VALIDATORS_RX = "invalidValidatorsRx";
     private static final String DROPPED_RESPONSES_RX = "droppedResponsesRx";
     private static final String MALFORMED_RESPONSES_RX = "malformedResponsesRx";
     private static final String UNKNOWN_SERVER_RX = "unknownServerRx";
     private static final String REQUEST_RTT_MILLIS = "requestRttMillis";
     private static final String REQUEST_RE_TX = "requestReTx";
-    private static final String TIMED_OUT_PACKETS = "timedOutPackets";
+    private static final String NUM_SESSIONS_EXPIRED = "numSessionsExpired";
     private static final String EAPOL_LOGOFF_RX = "eapolLogoffRx";
-    private static final String EAPOL_RES_IDENTITY_MSG_TRANS = "eapolResIdentityMsgTrans";
-    private static final String EAPOL_AUTH_SUCCESS_TRANS = "eapolAuthSuccessTrans";
-    private static final String EAPOL_AUTH_FAILURE_TRANS = "eapolAuthFailureTrans";
-    private static final String EAPOL_START_REQ_TRANS = "eapolStartReqTrans";
-    private static final String EAP_PKT_TX_AUTH_CHOOSE_EAP = "eapPktTxauthChooseEap";
+    private static final String EAPOL_AUTH_SUCCESS_TX = "eapolAuthSuccessTx";
+    private static final String EAPOL_AUTH_FAILURE_TX = "eapolAuthFailureTrans";
+    private static final String EAPOL_START_REQ_RX = "eapolStartRequestRx";
+    private static final String EAPOL_MD5_CHALLENGE_RESP_RX = "eapolMd5ChallengeResponseRx";
+    private static final String EAPOL_TLS_CHALLENGE_RESP = "eapolTlsRespChallenge";
     private static final String EAPOL_TRANS_RESP_NOT_NAK = "eapolTransRespNotNak";
+    private static final String EAPOL_CHALLENGE_REQ_TX = "eapolChallengeRequestTx";
+    private static final String EAPOL_ID_RESP_FRAMES_RX = "eapolIdentityResponseRx";
+    private static final String EAPOL_ID_MSG_RESP_TX = "eapolIdentityMsgResponseTx";
     private static final String EAPOL_FRAMES_TX = "eapolFramesTx";
     private static final String AUTH_STATE_IDLE = "authStateIdle";
-    private static final String REQUEST_ID_FRAMES_TX = "requestIdFramesTx";
-    private static final String REQUEST_EAP_FRAMES_TX = "requestEapFramesTx";
+    private static final String EAPOL_ID_REQUEST_FRAMES_TX = "eapolIdentityRequestTx";
+    private static final String EAPOL_REQUEST_FRAMES_TX = "eapolRequestFramesTx"; //TODO check
     private static final String INVALID_PKT_TYPE = "invalidPktType";
     private static final String INVALID_BODY_LENGTH = "invalidBodyLength";
-    private static final String VALID_EAPOL_FRAMES_RX = "validEapolFramesRx";
-    private static final String PENDING_RES_SUPPLICANT = "pendingResSupplicant";
-    private static final String RES_ID_EAP_FRAMES_RX = "resIdEapFramesRx";
+    private static final String EAPOL_VALID_FRAMES_RX = "eapolValidFramesRx";
+    private static final String EAPOL_PENDING_REQUESTS = "eapolPendingRequests";
 
     private static final String OPERATIONAL_STATUS = "radiusOperationalStatus";
 
@@ -243,13 +248,15 @@
         ObjectMapper mapper = new ObjectMapper();
         ObjectNode authMetricsEvent = mapper.createObjectNode();
         authMetricsEvent.put(TIMESTAMP, Instant.now().toString());
-        authMetricsEvent.put(ACCEPT_RESPONSES_RX, event.subject().getAcceptResponsesRx());
-        authMetricsEvent.put(REJECT_RESPONSES_RX, event.subject().getRejectResponsesRx());
-        authMetricsEvent.put(CHALLENGE_RESPONSES_RX, event.subject().getChallengeResponsesRx());
-        authMetricsEvent.put(ACCESS_REQUESTS_TX, event.subject().getAccessRequestsTx());
+        authMetricsEvent.put(RADIUS_ACCEPT_RESPONSES_RX, event.subject().getRadiusAcceptResponsesRx());
+        authMetricsEvent.put(RADIUS_REJECT_RESPONSES_RX, event.subject().getRadiusRejectResponsesRx());
+        authMetricsEvent.put(RADIUS_CHALLENGE_RESPONSES_RX, event.subject().getRadiusChallengeResponsesRx());
+        authMetricsEvent.put(RADIUS_ACCESS_REQUESTS_IDENTITY_TX, event.subject().getRadiusReqIdTx());
+        authMetricsEvent.put(RADIUS_ACCESS_REQUESTS_CHALLENGE_TX, event.subject().getRadiusReqChallengeTx());
+        authMetricsEvent.put(RADIUS_ACCESS_REQUESTS_TX, event.subject().getRadiusAccessRequestsTx());
         authMetricsEvent.put(INVALID_VALIDATORS_RX, event.subject().getInvalidValidatorsRx());
         authMetricsEvent.put(UNKNOWN_TYPE_RX, event.subject().getUnknownTypeRx());
-        authMetricsEvent.put(PENDING_REQUESTS, event.subject().getPendingRequests());
+        authMetricsEvent.put(RADIUS_PENDING_REQUESTS, event.subject().getRadiusPendingRequests());
         authMetricsEvent.put(DROPPED_RESPONSES_RX, event.subject().getDroppedResponsesRx());
         authMetricsEvent.put(MALFORMED_RESPONSES_RX, event.subject().getMalformedResponsesRx());
         authMetricsEvent.put(UNKNOWN_SERVER_RX, event.subject().getUnknownServerRx());
@@ -257,21 +264,21 @@
         authMetricsEvent.put(REQUEST_RE_TX, event.subject().getRequestReTx());
         authMetricsEvent.put(TIMED_OUT_PACKETS, event.subject().getTimedOutPackets());
         authMetricsEvent.put(EAPOL_LOGOFF_RX, event.subject().getEapolLogoffRx());
-        authMetricsEvent.put(EAPOL_RES_IDENTITY_MSG_TRANS, event.subject().getEapolResIdentityMsgTrans());
-        authMetricsEvent.put(EAPOL_AUTH_SUCCESS_TRANS, event.subject().getEapolAuthSuccessTrans());
-        authMetricsEvent.put(EAPOL_AUTH_FAILURE_TRANS, event.subject().getEapolAuthFailureTrans());
-        authMetricsEvent.put(EAPOL_START_REQ_TRANS, event.subject().getEapolStartReqTrans());
-        authMetricsEvent.put(EAP_PKT_TX_AUTH_CHOOSE_EAP, event.subject().getEapPktTxauthChooseEap());
+        authMetricsEvent.put(EAPOL_ID_MSG_RESP_TX, event.subject().getEapolResIdentityMsgTrans());
+        authMetricsEvent.put(EAPOL_AUTH_SUCCESS_TX, event.subject().getEapolAuthSuccessTx());
+        authMetricsEvent.put(EAPOL_AUTH_FAILURE_TX, event.subject().getEapolAuthFailureTx());
+        authMetricsEvent.put(EAPOL_START_REQ_RX, event.subject().getEapolStartReqRx());
+        authMetricsEvent.put(EAPOL_CHALLENGE_REQ_TX, event.subject().getEapolChallengeReqTx());
         authMetricsEvent.put(EAPOL_TRANS_RESP_NOT_NAK, event.subject().getEapolTransRespNotNak());
         authMetricsEvent.put(EAPOL_FRAMES_TX, event.subject().getEapolFramesTx());
         authMetricsEvent.put(AUTH_STATE_IDLE, event.subject().getAuthStateIdle());
-        authMetricsEvent.put(REQUEST_ID_FRAMES_TX, event.subject().getRequestIdFramesTx());
-        authMetricsEvent.put(REQUEST_EAP_FRAMES_TX, event.subject().getReqEapFramesTx());
+        authMetricsEvent.put(EAPOL_ID_REQUEST_FRAMES_TX, event.subject().getEapolIdRequestFramesTx());
+        authMetricsEvent.put(EAPOL_REQUEST_FRAMES_TX, event.subject().getEapolReqFramesTx());
         authMetricsEvent.put(INVALID_PKT_TYPE, event.subject().getInvalidPktType());
         authMetricsEvent.put(INVALID_BODY_LENGTH, event.subject().getInvalidBodyLength());
-        authMetricsEvent.put(VALID_EAPOL_FRAMES_RX, event.subject().getValidEapolFramesRx());
-        authMetricsEvent.put(PENDING_RES_SUPPLICANT, event.subject().getPendingResSupp());
-        authMetricsEvent.put(RES_ID_EAP_FRAMES_RX, event.subject().getEapolattrIdentity());
+        authMetricsEvent.put(EAPOL_VALID_FRAMES_RX, event.subject().getEapolValidFramesRx());
+        authMetricsEvent.put(EAPOL_PENDING_REQUESTS, event.subject().getEapolPendingReq());
+        authMetricsEvent.put(EAPOL_ID_RESP_FRAMES_RX, event.subject().getEapolattrIdentity());
         return authMetricsEvent;
     }
 
