asdctool code quality improvements
[sdc.git] / asdctool / src / main / java / org / openecomp / sdc / asdctool / impl / DataMigration.java
index 9b1e3dc..4842163 100644 (file)
 
 package org.openecomp.sdc.asdctool.impl;
 
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.lang.reflect.Type;
-import java.net.MalformedURLException;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.EnumMap;
-import java.util.Map;
-import java.util.TimeZone;
 
+import com.carrotsearch.hppc.cursors.ObjectCursor;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import fj.data.Either;
 import org.apache.commons.lang.SystemUtils;
 import org.elasticsearch.action.search.SearchResponse;
 import org.elasticsearch.cluster.metadata.IndexMetaData;
@@ -49,6 +34,17 @@ import org.elasticsearch.common.unit.TimeValue;
 import org.elasticsearch.index.query.QueryBuilder;
 import org.elasticsearch.index.query.QueryBuilders;
 import org.elasticsearch.search.SearchHit;
+import org.openecomp.sdc.be.auditing.api.AuditEventFactory;
+import org.openecomp.sdc.be.auditing.impl.AuditAuthRequestEventFactory;
+import org.openecomp.sdc.be.auditing.impl.AuditConsumerEventFactory;
+import org.openecomp.sdc.be.auditing.impl.AuditGetUebClusterEventFactory;
+import org.openecomp.sdc.be.auditing.impl.category.AuditCategoryEventFactory;
+import org.openecomp.sdc.be.auditing.impl.category.AuditGetCategoryHierarchyEventFactory;
+import org.openecomp.sdc.be.auditing.impl.distribution.*;
+import org.openecomp.sdc.be.auditing.impl.resourceadmin.AuditResourceAdminEventMigrationFactory;
+import org.openecomp.sdc.be.auditing.impl.usersadmin.AuditGetUsersListEventFactory;
+import org.openecomp.sdc.be.auditing.impl.usersadmin.AuditUserAccessEventFactory;
+import org.openecomp.sdc.be.auditing.impl.usersadmin.AuditUserAdminEventFactory;
 import org.openecomp.sdc.be.dao.cassandra.ArtifactCassandraDao;
 import org.openecomp.sdc.be.dao.cassandra.AuditCassandraDao;
 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
@@ -57,53 +53,37 @@ import org.openecomp.sdc.be.dao.es.ElasticSearchClient;
 import org.openecomp.sdc.be.resources.data.ESArtifactData;
 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
 import org.openecomp.sdc.be.resources.data.auditing.AuditingGenericEvent;
-import org.openecomp.sdc.be.resources.data.auditing.AuditingGetUebClusterEvent;
 import org.openecomp.sdc.be.resources.data.auditing.AuditingTypesConstants;
-import org.openecomp.sdc.be.resources.data.auditing.AuthEvent;
-import org.openecomp.sdc.be.resources.data.auditing.CategoryEvent;
-import org.openecomp.sdc.be.resources.data.auditing.ConsumerEvent;
-import org.openecomp.sdc.be.resources.data.auditing.DistributionDeployEvent;
-import org.openecomp.sdc.be.resources.data.auditing.DistributionDownloadEvent;
-import org.openecomp.sdc.be.resources.data.auditing.DistributionEngineEvent;
-import org.openecomp.sdc.be.resources.data.auditing.DistributionNotificationEvent;
-import org.openecomp.sdc.be.resources.data.auditing.DistributionStatusEvent;
-import org.openecomp.sdc.be.resources.data.auditing.GetCategoryHierarchyEvent;
-import org.openecomp.sdc.be.resources.data.auditing.GetUsersListEvent;
-import org.openecomp.sdc.be.resources.data.auditing.ResourceAdminEvent;
-import org.openecomp.sdc.be.resources.data.auditing.UserAccessEvent;
-import org.openecomp.sdc.be.resources.data.auditing.UserAdminEvent;
-import org.openecomp.sdc.common.datastructure.AuditingFieldsKeysEnum;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.openecomp.sdc.be.resources.data.auditing.model.*;
+import org.openecomp.sdc.common.datastructure.AuditingFieldsKey;
+import org.openecomp.sdc.common.log.wrappers.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import com.carrotsearch.hppc.cursors.ObjectCursor;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
-
-import fj.data.Either;
+import java.io.*;
+import java.net.MalformedURLException;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.EnumMap;
+import java.util.Map;
 
 /**
  * Created by mlando on 5/16/2016.
  */
 public class DataMigration {
 
-       private Gson gson = new Gson();
-
        private ObjectMapper jsonMapper = new ObjectMapper();
 
-       private static Logger log = LoggerFactory.getLogger(DataMigration.class.getName());
+       private static Logger log = Logger.getLogger(DataMigration.class.getName());
 
-       protected ElasticSearchClient elasticSearchClient;
+       private ElasticSearchClient elasticSearchClient;
        @Autowired
-       protected AuditCassandraDao auditCassandraDao;
+       private AuditCassandraDao auditCassandraDao;
        @Autowired
-       protected ArtifactCassandraDao artifactCassandraDao;
-       private static final String dateFormatPattern = "yyyy-MM-dd HH:mm:ss.SSS z";
-       private static SimpleDateFormat simpleDateFormat;
+       private ArtifactCassandraDao artifactCassandraDao;
 
-       /**
+    /**
         * the method exports and imports the records from ES to cassandra the flow
         * will check to see if the files are not empty if the files are not empty
         * the export will be skiped and the flow will use the existing files. the
@@ -122,9 +102,9 @@ public class DataMigration {
         * @return true in case the operation was successful.
         */
        public boolean migrateDataESToCassndra(String appConfigDir, boolean exportFromEs, boolean importToCassandra) {
-               initFormater();
-               if (!initEsClient())
+               if (!initEsClient()) {
                        return false;
+               }
                Map<Table, File> files = createOutPutFiles(appConfigDir, exportFromEs);
                if (files == null) {
                        return false;
@@ -137,15 +117,10 @@ public class DataMigration {
                        try {
                                ImmutableOpenMap<String, IndexMetaData> indexData = getIndexData();
                                for (ObjectCursor<String> key : indexData.keys()) {
-                                       if ("resources".equalsIgnoreCase(key.value)) {
-                                               if (!exportArtifacts(key.value, printerWritersMap)) {
-                                                       return false;
-                                               }
-                                       } else if (key.value.startsWith("auditingevents")) {
-                                               if (!exportAudit(key.value, printerWritersMap)) {
-                                                       return false;
-                                               }
-                                       }
+                                       if (("resources".equalsIgnoreCase(key.value) || key.value.startsWith("auditingevents"))
+                        && !exportArtifacts(key.value, printerWritersMap)) {
+                        return false;
+                    }
                                }
                        } finally {
                                if (elasticSearchClient != null) {
@@ -156,16 +131,8 @@ public class DataMigration {
                                }
                        }
                }
-               if (importToCassandra && !importToCassndra(files)) {
-                       return false;
-               }
-
-               return true;
-       }
 
-       private void initFormater() {
-               simpleDateFormat = new SimpleDateFormat(dateFormatPattern);
-               simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
+               return !importToCassandra || importToCassndra(files);
        }
 
        private boolean initEsClient() {
@@ -242,212 +209,300 @@ public class DataMigration {
        }
 
        /**
-        * the method retrieves the fields from the given map and praprs them for
-        * storage as an audit according to the table name
+        * the method retrieves the fields from the given map and generates
+     * corresponding audit event according to the table name
         * 
         * @param map
         *            the map from which we will retrive the fields enum values
         * @param table
         *            the table we are going to store the record in.
-        * @return a enummap representing the audit record that is going to be
+        * @return an AuditingGenericEvent event representing the audit record that is going to be
         *         created.
         */
-       private EnumMap<AuditingFieldsKeysEnum, Object> createAuditMap(Map<String, String> map, Table table) {
-               EnumMap<AuditingFieldsKeysEnum, Object> auditingFields = new EnumMap<>(AuditingFieldsKeysEnum.class);
+       AuditingGenericEvent createAuditEvent(Map<AuditingFieldsKey, String> map, Table table) {
+               AuditEventFactory factory = null;
                switch (table) {
-               case USER_ADMIN_EVENT:
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP, map.get("TIMESTAMP"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, map.get("REQUEST_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_SERVICE_INSTANCE_ID, map.get("SERVICE_INSTANCE_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, map.get("ACTION"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, map.get("DESC"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, map.get("STATUS"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_USER_AFTER, map.get("USER_AFTER"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_USER_BEFORE, map.get("USER_BEFORE"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, map.get("MODIFIER"));
-                       break;
-               case USER_ACCESS_EVENT:
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP, map.get("TIMESTAMP"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, map.get("REQUEST_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_SERVICE_INSTANCE_ID, map.get("SERVICE_INSTANCE_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, map.get("ACTION"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, map.get("DESC"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, map.get("STATUS"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_USER_UID, map.get("USER"));
-                       break;
-               case RESOURCE_ADMIN_EVENT:
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP, map.get("TIMESTAMP"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, map.get("REQUEST_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_SERVICE_INSTANCE_ID, map.get("SERVICE_INSTANCE_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_INVARIANT_UUID, map.get("INVARIANT_UUID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, map.get("ACTION"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, map.get("DESC"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, map.get("STATUS"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_CURR_VERSION, map.get("CURR_VERSION"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_CURR_STATE, map.get("CURR_STATE"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_ID, map.get("DID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, map.get("MODIFIER"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_PREV_VERSION, map.get("PREV_VERSION"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_PREV_STATE, map.get("PREV_STATE"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_NAME, map.get("RESOURCE_NAME"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_TYPE, map.get("RESOURCE_TYPE"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_DPREV_STATUS, map.get("DPREV_STATUS"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_DCURR_STATUS, map.get("DCURR_STATUS"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_TOSCA_NODE_TYPE, map.get("TOSCA_NODE_TYPE"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_COMMENT, map.get("COMMENT"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ARTIFACT_DATA, map.get("ARTIFACT_DATA"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_PREV_ARTIFACT_UUID, map.get("PREV_ARTIFACT_UUID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_CURR_ARTIFACT_UUID, map.get("CURR_ARTIFACT_UUID"));
-                       break;
-               case DISTRIBUTION_DOWNLOAD_EVENT:
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP, map.get("TIMESTAMP"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, map.get("REQUEST_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_SERVICE_INSTANCE_ID, map.get("SERVICE_INSTANCE_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, map.get("ACTION"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, map.get("DESC"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, map.get("STATUS"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_RESOURCE_URL, map.get("RESOURCE_URL"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_CONSUMER_ID, map.get("CONSUMER_ID"));
-                       break;
-               case DISTRIBUTION_ENGINE_EVENT:
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP, map.get("TIMESTAMP"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, map.get("REQUEST_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_SERVICE_INSTANCE_ID, map.get("SERVICE_INSTANCE_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, map.get("ACTION"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, map.get("DESC"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, map.get("STATUS"));
-                       if (map.get("TOPIC_NAME") != null) {
-                               if (map.get("TOPIC_NAME").contains("-STATUS-")) {
-                                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_STATUS_TOPIC_NAME,
-                                                       map.get("TOPIC_NAME"));
-                               } else {
-                                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_NOTIFICATION_TOPIC_NAME,
-                                                       map.get("TOPIC_NAME"));
-                               }
-                       } else {
-                               auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_STATUS_TOPIC_NAME,
-                                               map.get("DSTATUS_TOPIC"));
-                               auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_NOTIFICATION_TOPIC_NAME,
-                                               map.get("DNOTIF_TOPIC"));
-                       }
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_TOPIC_NAME, map.get("TOPIC_NAME"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_ROLE, map.get("ROLE"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_API_KEY, map.get("API_KEY"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_ENVRIONMENT_NAME, map.get("D_ENV"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_CONSUMER_ID, map.get("CONSUMER_ID"));
-                       break;
-               case DISTRIBUTION_NOTIFICATION_EVENT:
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP, map.get("TIMESTAMP"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, map.get("REQUEST_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_SERVICE_INSTANCE_ID, map.get("SERVICE_INSTANCE_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, map.get("ACTION"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, map.get("DESC"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, map.get("STATUS"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_CURR_STATE, map.get("CURR_STATE"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_CURR_VERSION, map.get("CURR_VERSION"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_ID, map.get("DID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, map.get("MODIFIER"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_NAME, map.get("RESOURCE_NAME"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_TYPE, map.get("RESOURCE_TYPE"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_TOPIC_NAME, map.get("TOPIC_NAME"));
-                       break;
-               case DISTRIBUTION_STATUS_EVENT:
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP, map.get("TIMESTAMP"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, map.get("REQUEST_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_SERVICE_INSTANCE_ID, map.get("SERVICE_INSTANCE_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, map.get("ACTION"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, map.get("DESC"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, map.get("STATUS"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_RESOURCE_URL, map.get("RESOURCE_URL"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_ID, map.get("DID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_TOPIC_NAME, map.get("TOPIC_NAME"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_CONSUMER_ID, map.get("CONSUMER_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_STATUS_TIME, map.get("STATUS_TIME"));
-                       break;
-               case DISTRIBUTION_DEPLOY_EVENT:
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP, map.get("TIMESTAMP"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, map.get("REQUEST_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_SERVICE_INSTANCE_ID, map.get("SERVICE_INSTANCE_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, map.get("ACTION"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, map.get("DESC"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, map.get("STATUS"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_ID, map.get("DID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_NAME, map.get("RESOURCE_NAME"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_TYPE, map.get("RESOURCE_TYPE"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, map.get("MODIFIER"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_CURR_VERSION, map.get("CURR_VERSION"));
-                       break;
-               case DISTRIBUTION_GET_UEB_CLUSTER_EVENT:
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP, map.get("TIMESTAMP"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, map.get("REQUEST_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_SERVICE_INSTANCE_ID, map.get("SERVICE_INSTANCE_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, map.get("ACTION"));
-                       if (map.get("STATUS_DESC") != null) {
-                               auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, map.get("STATUS_DESC"));
-                       } else {
-                               auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, map.get("DESC"));
-                       }
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, map.get("STATUS"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_CONSUMER_ID, map.get("CONSUMER_ID"));
-                       break;
-               case AUTH_EVENT:
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP, map.get("TIMESTAMP"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, map.get("ACTION"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, map.get("DESC"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, map.get("REQUEST_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, map.get("STATUS"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_AUTH_USER, map.get("USER"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_AUTH_URL, map.get("URL"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_AUTH_STATUS, map.get("AUTH_STATUS"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_AUTH_REALM, map.get("REALM"));
-                       break;
-               case CONSUMER_EVENT:
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP, map.get("TIMESTAMP"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, map.get("ACTION"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, map.get("DESC"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, map.get("STATUS"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, map.get("MODIFIER"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, map.get("REQUEST_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ECOMP_USER, map.get("ECOMP_USER"));
-                       break;
-               case CATEGORY_EVENT:
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP, map.get("TIMESTAMP"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, map.get("ACTION"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, map.get("DESC"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, map.get("STATUS"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, map.get("MODIFIER"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, map.get("REQUEST_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_SERVICE_INSTANCE_ID, map.get("SERVICE_INSTANCE_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_CATEGORY_NAME, map.get("CATEGORY_NAME"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_SUB_CATEGORY_NAME, map.get("SUB_CATEGORY_NAME"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_GROUPING_NAME, map.get("GROUPING_NAME"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_TYPE, map.get("RESOURCE_TYPE"));
-                       break;
-               case GET_USERS_LIST_EVENT:
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP, map.get("TIMESTAMP"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, map.get("ACTION"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, map.get("DESC"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, map.get("STATUS"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, map.get("MODIFIER"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, map.get("REQUEST_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DETAILS, map.get("DETAILS"));
-                       break;
-               case GET_CATEGORY_HIERARCHY_EVENT:
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP, map.get("TIMESTAMP"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, map.get("ACTION"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, map.get("DESC"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, map.get("STATUS"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, map.get("MODIFIER"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, map.get("REQUEST_ID"));
-                       auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DETAILS, map.get("DETAILS"));
-                       break;
-               default:
-                       auditingFields = null;
-                       break;
+                       case USER_ADMIN_EVENT:
+                               factory = getAuditUserAdminEventFactory(map);
+                               break;
+                       case USER_ACCESS_EVENT:
+                               factory = getAuditUserAccessEventFactory(map);
+                               break;
+                       case RESOURCE_ADMIN_EVENT:
+                               factory = getAuditResourceAdminEventMigrationFactory(map);
+                               break;
+                       case DISTRIBUTION_DOWNLOAD_EVENT:
+                               factory = getAuditDistributionDownloadEventFactory(map);
+                               break;
+                       case DISTRIBUTION_ENGINE_EVENT:
+                               factory = getAuditDistributionEngineEventMigrationFactory(map);
+                               break;
+                       case DISTRIBUTION_NOTIFICATION_EVENT:
+                               factory = getAuditDistributionNotificationEventFactory(map);
+                               break;
+                       case DISTRIBUTION_STATUS_EVENT:
+                               factory = getAuditDistributionStatusEventFactory(map);
+                               break;
+                       case DISTRIBUTION_DEPLOY_EVENT:
+                               factory = getAuditDistributionDeployEventFactory(map);
+                               break;
+                       case DISTRIBUTION_GET_UEB_CLUSTER_EVENT:
+                               factory = getAuditGetUebClusterEventFactory(map);
+                               break;
+                       case AUTH_EVENT:
+                               factory = getAuditAuthRequestEventFactory(map);
+                               break;
+                       case CONSUMER_EVENT:
+                               factory = getAuditConsumerEventFactory(map);
+                               break;
+                       case CATEGORY_EVENT:
+                               factory = getAuditCategoryEventFactory(map);
+                               break;
+                       case GET_USERS_LIST_EVENT:
+                               factory = getAuditGetUsersListEventFactory(map);
+                               break;
+                       case GET_CATEGORY_HIERARCHY_EVENT:
+                               factory = getAuditGetCategoryHierarchyEventFactory(map);
+                               break;
+                       default:
+                               break;
                }
-               return auditingFields;
+               return factory != null ? factory.getDbEvent() : null;
+       }
+
+       private AuditEventFactory getAuditGetCategoryHierarchyEventFactory(Map<AuditingFieldsKey, String> map) {
+               return new AuditGetCategoryHierarchyEventFactory(
+                       CommonAuditData.newBuilder()
+                                       .description(map.get(AuditingFieldsKey.AUDIT_DESC))
+                                       .status(map.get(AuditingFieldsKey.AUDIT_STATUS))
+                                       .requestId(map.get(AuditingFieldsKey.AUDIT_REQUEST_ID))
+                                       .serviceInstanceId(map.get(AuditingFieldsKey.AUDIT_SERVICE_INSTANCE_ID))
+                                       .build(),
+                       map.get(AuditingFieldsKey.AUDIT_MODIFIER_UID),
+                       map.get(AuditingFieldsKey.AUDIT_DETAILS),
+                       map.get(AuditingFieldsKey.AUDIT_TIMESTAMP));
+       }
+
+       private AuditEventFactory getAuditGetUsersListEventFactory(Map<AuditingFieldsKey, String> map) {
+               return new AuditGetUsersListEventFactory(
+                       CommonAuditData.newBuilder()
+                                       .description(map.get(AuditingFieldsKey.AUDIT_DESC))
+                                       .status(map.get(AuditingFieldsKey.AUDIT_STATUS))
+                                       .requestId(map.get(AuditingFieldsKey.AUDIT_REQUEST_ID))
+                                       .serviceInstanceId(map.get(AuditingFieldsKey.AUDIT_SERVICE_INSTANCE_ID))
+                                       .build(),
+                       map.get(AuditingFieldsKey.AUDIT_MODIFIER_UID),
+                       map.get(AuditingFieldsKey.AUDIT_USER_DETAILS),
+                       map.get(AuditingFieldsKey.AUDIT_TIMESTAMP));
+       }
+
+       private AuditEventFactory getAuditCategoryEventFactory(Map<AuditingFieldsKey, String> map) {
+               return new AuditCategoryEventFactory(
+                       AuditingActionEnum.fromName(map.get(AuditingFieldsKey.AUDIT_ACTION)),
+                       CommonAuditData.newBuilder()
+                                       .description(map.get(AuditingFieldsKey.AUDIT_DESC))
+                                       .status(map.get(AuditingFieldsKey.AUDIT_STATUS))
+                                       .requestId(map.get(AuditingFieldsKey.AUDIT_REQUEST_ID))
+                                       .serviceInstanceId(map.get(AuditingFieldsKey.AUDIT_SERVICE_INSTANCE_ID))
+                                       .build(),
+                       map.get(AuditingFieldsKey.AUDIT_MODIFIER_UID),
+                       map.get(AuditingFieldsKey.AUDIT_CATEGORY_NAME),
+                       map.get(AuditingFieldsKey.AUDIT_SUB_CATEGORY_NAME),
+                       map.get(AuditingFieldsKey.AUDIT_GROUPING_NAME),
+                       map.get(AuditingFieldsKey.AUDIT_RESOURCE_TYPE),
+                       map.get(AuditingFieldsKey.AUDIT_TIMESTAMP));
+       }
+
+       private AuditEventFactory getAuditUserAccessEventFactory(Map<AuditingFieldsKey, String> map) {
+               return new AuditUserAccessEventFactory(
+                       CommonAuditData.newBuilder()
+                                       .description(map.get(AuditingFieldsKey.AUDIT_DESC))
+                                       .status(map.get(AuditingFieldsKey.AUDIT_STATUS))
+                                       .requestId(map.get(AuditingFieldsKey.AUDIT_REQUEST_ID))
+                                       .serviceInstanceId(map.get(AuditingFieldsKey.AUDIT_SERVICE_INSTANCE_ID))
+                                       .build(),
+                       map.get(AuditingFieldsKey.AUDIT_USER_UID),
+                       map.get(AuditingFieldsKey.AUDIT_TIMESTAMP));
+       }
+
+       private AuditEventFactory getAuditUserAdminEventFactory(Map<AuditingFieldsKey, String> map) {
+               return new AuditUserAdminEventFactory(
+            AuditingActionEnum.fromName(map.get(AuditingFieldsKey.AUDIT_ACTION)),
+                       CommonAuditData.newBuilder()
+                                       .description(map.get(AuditingFieldsKey.AUDIT_DESC))
+                                       .status(map.get(AuditingFieldsKey.AUDIT_STATUS))
+                                       .requestId(map.get(AuditingFieldsKey.AUDIT_REQUEST_ID))
+                                       .serviceInstanceId(map.get(AuditingFieldsKey.AUDIT_SERVICE_INSTANCE_ID))
+                                       .build(),
+                       map.get(AuditingFieldsKey.AUDIT_MODIFIER_UID),
+                       map.get(AuditingFieldsKey.AUDIT_USER_BEFORE),
+                       map.get(AuditingFieldsKey.AUDIT_USER_AFTER),
+                       map.get(AuditingFieldsKey.AUDIT_TIMESTAMP));
+       }
+
+       private AuditEventFactory getAuditConsumerEventFactory(Map<AuditingFieldsKey, String> map) {
+               return new AuditConsumerEventFactory(
+                   AuditingActionEnum.fromName(map.get(AuditingFieldsKey.AUDIT_ACTION)),
+                       CommonAuditData.newBuilder()
+                                       .description(map.get(AuditingFieldsKey.AUDIT_DESC))
+                                       .status(map.get(AuditingFieldsKey.AUDIT_STATUS))
+                                       .requestId(map.get(AuditingFieldsKey.AUDIT_REQUEST_ID))
+                                       .serviceInstanceId(map.get(AuditingFieldsKey.AUDIT_SERVICE_INSTANCE_ID))
+                                       .build(),
+                       map.get(AuditingFieldsKey.AUDIT_MODIFIER_UID),
+                       map.get(AuditingFieldsKey.AUDIT_ECOMP_USER),
+                       map.get(AuditingFieldsKey.AUDIT_TIMESTAMP));
+       }
+
+       private AuditEventFactory getAuditAuthRequestEventFactory(Map<AuditingFieldsKey, String> map) {
+               return new AuditAuthRequestEventFactory(
+                       CommonAuditData.newBuilder()
+                                       .description(map.get(AuditingFieldsKey.AUDIT_DESC))
+                                       .status(map.get(AuditingFieldsKey.AUDIT_STATUS))
+                                       .requestId(map.get(AuditingFieldsKey.AUDIT_REQUEST_ID))
+                                       .serviceInstanceId(map.get(AuditingFieldsKey.AUDIT_SERVICE_INSTANCE_ID))
+                                       .build(),
+                       map.get(AuditingFieldsKey.AUDIT_USER_UID),
+                       map.get(AuditingFieldsKey.AUDIT_AUTH_URL),
+                       map.get(AuditingFieldsKey.AUDIT_AUTH_REALM),
+                       map.get(AuditingFieldsKey.AUDIT_AUTH_STATUS),
+                       map.get(AuditingFieldsKey.AUDIT_TIMESTAMP));
+       }
+
+       private AuditEventFactory getAuditGetUebClusterEventFactory(Map<AuditingFieldsKey, String> map) {
+               return new AuditGetUebClusterEventFactory(
+                       CommonAuditData.newBuilder()
+                                       .description(map.get(AuditingFieldsKey.AUDIT_DESC))
+                                       .status(map.get(AuditingFieldsKey.AUDIT_STATUS))
+                                       .requestId(map.get(AuditingFieldsKey.AUDIT_REQUEST_ID))
+                                       .serviceInstanceId(map.get(AuditingFieldsKey.AUDIT_SERVICE_INSTANCE_ID))
+                                       .build(),
+                       map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_CONSUMER_ID),
+                       map.get(AuditingFieldsKey.AUDIT_TIMESTAMP));
+       }
+
+       private AuditEventFactory getAuditResourceAdminEventMigrationFactory(Map<AuditingFieldsKey, String> map) {
+               return new AuditResourceAdminEventMigrationFactory(
+                AuditingActionEnum.fromName(map.get(AuditingFieldsKey.AUDIT_ACTION)),
+                       CommonAuditData.newBuilder()
+                                       .description(map.get(AuditingFieldsKey.AUDIT_DESC))
+                                       .status(map.get(AuditingFieldsKey.AUDIT_STATUS))
+                                       .requestId(map.get(AuditingFieldsKey.AUDIT_REQUEST_ID))
+                                       .serviceInstanceId(map.get(AuditingFieldsKey.AUDIT_SERVICE_INSTANCE_ID))
+                                       .build(),
+                       new ResourceCommonInfo(map.get(AuditingFieldsKey.AUDIT_RESOURCE_NAME),
+                                       map.get(AuditingFieldsKey.AUDIT_RESOURCE_TYPE)),
+                       ResourceVersionInfo.newBuilder()
+                                       .artifactUuid(map.get(AuditingFieldsKey.AUDIT_PREV_ARTIFACT_UUID))
+                                       .state(map.get(AuditingFieldsKey.AUDIT_RESOURCE_PREV_STATE))
+                                       .version(map.get(AuditingFieldsKey.AUDIT_RESOURCE_PREV_VERSION))
+                                       .distributionStatus(map.get(AuditingFieldsKey.AUDIT_RESOURCE_DPREV_STATUS))
+                                       .build(),
+                       ResourceVersionInfo.newBuilder()
+                                       .artifactUuid(map.get(AuditingFieldsKey.AUDIT_CURR_ARTIFACT_UUID))
+                                       .state(map.get(AuditingFieldsKey.AUDIT_RESOURCE_CURR_STATE))
+                                       .version(map.get(AuditingFieldsKey.AUDIT_RESOURCE_CURR_VERSION))
+                                       .distributionStatus(map.get(AuditingFieldsKey.AUDIT_RESOURCE_DCURR_STATUS))
+                                       .build(),
+                       map.get(AuditingFieldsKey.AUDIT_INVARIANT_UUID),
+                       map.get(AuditingFieldsKey.AUDIT_MODIFIER_UID),
+                       map.get(AuditingFieldsKey.AUDIT_ARTIFACT_DATA),
+                       map.get(AuditingFieldsKey.AUDIT_RESOURCE_COMMENT),
+                       map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_ID),
+                       map.get(AuditingFieldsKey.AUDIT_RESOURCE_TOSCA_NODE_TYPE),
+                       map.get(AuditingFieldsKey.AUDIT_TIMESTAMP));
+       }
+
+       private AuditEventFactory getAuditDistributionDownloadEventFactory(Map<AuditingFieldsKey, String> map) {
+               return new AuditDistributionDownloadEventFactory(
+                       CommonAuditData.newBuilder()
+                                       .description(map.get(AuditingFieldsKey.AUDIT_DESC))
+                                       .status(map.get(AuditingFieldsKey.AUDIT_STATUS))
+                                       .requestId(map.get(AuditingFieldsKey.AUDIT_REQUEST_ID))
+                                       .serviceInstanceId(map.get(AuditingFieldsKey.AUDIT_SERVICE_INSTANCE_ID))
+                                       .build(),
+                       new DistributionData(map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_CONSUMER_ID),
+                                       map.get(AuditingFieldsKey.AUDIT_RESOURCE_URL)),
+                               map.get(AuditingFieldsKey.AUDIT_TIMESTAMP));
+       }
+
+       private AuditEventFactory getAuditDistributionEngineEventMigrationFactory(Map<AuditingFieldsKey, String> map) {
+               return new AuditDistributionEngineEventMigrationFactory(
+                   AuditingActionEnum.fromName(map.get(AuditingFieldsKey.AUDIT_ACTION)),
+                       CommonAuditData.newBuilder()
+                                       .description(map.get(AuditingFieldsKey.AUDIT_DESC))
+                                       .status(map.get(AuditingFieldsKey.AUDIT_STATUS))
+                                       .requestId(map.get(AuditingFieldsKey.AUDIT_REQUEST_ID))
+                                       .serviceInstanceId(map.get(AuditingFieldsKey.AUDIT_SERVICE_INSTANCE_ID))
+                                       .build(),
+                       DistributionTopicData.newBuilder()
+                                       .notificationTopic(map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_NOTIFICATION_TOPIC_NAME))
+                                       .statusTopic(map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_STATUS_TOPIC_NAME))
+                                       .build(),
+                       map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_CONSUMER_ID),
+                       map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_API_KEY),
+                       map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_ENVRIONMENT_NAME),
+                       map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_ROLE),
+                       map.get(AuditingFieldsKey.AUDIT_TIMESTAMP));
        }
 
+       private AuditEventFactory getAuditDistributionDeployEventFactory(Map<AuditingFieldsKey, String> map) {
+               return new AuditDistributionDeployEventFactory(
+                       CommonAuditData.newBuilder()
+                                       .description(map.get(AuditingFieldsKey.AUDIT_DESC))
+                                       .status(map.get(AuditingFieldsKey.AUDIT_STATUS))
+                                       .requestId(map.get(AuditingFieldsKey.AUDIT_REQUEST_ID))
+                                       .serviceInstanceId(map.get(AuditingFieldsKey.AUDIT_SERVICE_INSTANCE_ID))
+                                       .build(),
+                       new ResourceCommonInfo(map.get(AuditingFieldsKey.AUDIT_RESOURCE_NAME),
+                                       map.get(AuditingFieldsKey.AUDIT_RESOURCE_TYPE)),
+                       map.get(AuditingFieldsKey.AUDIT_RESOURCE_CURR_VERSION),
+                       map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_ID),
+                       map.get(AuditingFieldsKey.AUDIT_MODIFIER_UID),
+                       map.get(AuditingFieldsKey.AUDIT_TIMESTAMP));
+       }
+
+       private AuditEventFactory getAuditDistributionStatusEventFactory(Map<AuditingFieldsKey, String> map) {
+               return new AuditDistributionStatusEventFactory(
+                       CommonAuditData.newBuilder()
+                                       .description(map.get(AuditingFieldsKey.AUDIT_DESC))
+                                       .status(map.get(AuditingFieldsKey.AUDIT_STATUS))
+                                       .requestId(map.get(AuditingFieldsKey.AUDIT_REQUEST_ID))
+                                       .serviceInstanceId(map.get(AuditingFieldsKey.AUDIT_SERVICE_INSTANCE_ID))
+                                       .build(),
+                       new DistributionData(map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_CONSUMER_ID),
+                                       map.get(AuditingFieldsKey.AUDIT_RESOURCE_URL)),
+                       map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_ID),
+                       map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_TOPIC_NAME),
+                       map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_STATUS_TIME),
+                       map.get(AuditingFieldsKey.AUDIT_TIMESTAMP));
+       }
+
+       private AuditEventFactory getAuditDistributionNotificationEventFactory(Map<AuditingFieldsKey, String> map) {
+               return new AuditDistributionNotificationEventFactory(
+                       CommonAuditData.newBuilder()
+                                       .description(map.get(AuditingFieldsKey.AUDIT_DESC))
+                                       .status(map.get(AuditingFieldsKey.AUDIT_STATUS))
+                                       .requestId(map.get(AuditingFieldsKey.AUDIT_REQUEST_ID))
+                                       .serviceInstanceId(map.get(AuditingFieldsKey.AUDIT_SERVICE_INSTANCE_ID))
+                                       .build(),
+                       new ResourceCommonInfo(map.get(AuditingFieldsKey.AUDIT_RESOURCE_NAME),
+                                       map.get(AuditingFieldsKey.AUDIT_RESOURCE_TYPE)),
+                       ResourceVersionInfo.newBuilder()
+                                       .state(map.get(AuditingFieldsKey.AUDIT_RESOURCE_CURR_STATE))
+                                       .version(map.get(AuditingFieldsKey.AUDIT_RESOURCE_CURR_VERSION))
+                                       .build(),
+                       map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_ID),
+                       map.get(AuditingFieldsKey.AUDIT_MODIFIER_UID),
+                       map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_TOPIC_NAME),
+                       new OperationalEnvAuditData(map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_ENVIRONMENT_ID),
+                                       map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_VNF_WORKLOAD_CONTEXT),
+                                       map.get(AuditingFieldsKey.AUDIT_DISTRIBUTION_TENANT)),
+                       map.get(AuditingFieldsKey.AUDIT_TIMESTAMP));
+       }
+
+
+
        /**
         * the method reads the content of the file intended for a given table, and
         * sores them in cassandra
@@ -466,23 +521,15 @@ public class DataMigration {
                        br = new BufferedReader(new FileReader(files.get(table)));
                        String line = null;
                        while ((line = br.readLine()) != null) {
-                               CassandraOperationStatus res = null;
+                               CassandraOperationStatus res = CassandraOperationStatus.GENERAL_ERROR;
                                if (Table.ARTIFACT.equals(table)) {
                                        res = artifactCassandraDao.saveArtifact(jsonMapper.readValue(line, ESArtifactData.class));
-                               } else {
-                                       Type type = new TypeToken<Map<String, String>>() {
-                                       }.getType();
-                                       Map<String, String> map = gson.fromJson(line, type);
-                                       EnumMap<AuditingFieldsKeysEnum, Object> auditingFields = createAuditMap(map, table);
-                                       AuditingGenericEvent recordForCassandra = null;
-                                       try {
-                                               recordForCassandra = createAuditRecord(auditingFields);
-                                       } catch (ParseException e) {
-                                               log.error("filed to parse time stemp in recored {}", auditingFields);
-                                               return false;
-                                       }
-
-                                       res = auditCassandraDao.saveRecord(recordForCassandra);
+                               }
+                               else {
+                    AuditingGenericEvent recordForCassandra = createAuditRecordForCassandra(line, table);
+                                       if (recordForCassandra != null) {
+                        res = auditCassandraDao.saveRecord(recordForCassandra);
+                    }
                                }
                                if (!res.equals(CassandraOperationStatus.OK)) {
                                        log.error("save recored to cassndra {} failed with status {} aborting.",
@@ -505,6 +552,14 @@ public class DataMigration {
                }
        }
 
+    AuditingGenericEvent createAuditRecordForCassandra(String json, Table table) throws IOException{
+        return createAuditEvent(parseToMap(json), table);
+    }
+
+       private Map<AuditingFieldsKey, String> parseToMap(String json) throws IOException {
+               return jsonMapper.readValue(json, new TypeReference<Map<AuditingFieldsKey, String>>(){});
+       }
+
        /**
         * the method checks if the given table is empty
         * 
@@ -660,20 +715,18 @@ public class DataMigration {
         */
        private Map<Table, PrintWriter> createWriters(Map<Table, File> files) {
                Map<Table, PrintWriter> printerWritersMap = new EnumMap<>(Table.class);
-               try {
+      
                        for (Table table : files.keySet()) {
                                log.info("creating writer for {}", table);
                                File file = files.get(table);
-                               FileWriter fw = new FileWriter(file, true);
-                               BufferedWriter bw = new BufferedWriter(fw);
-                               PrintWriter out = new PrintWriter(bw);
+                try(PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file)) )){
                                printerWritersMap.put(table, out);
                                log.info("creating writer for {} was successful", table);
-                       }
-               } catch (IOException e) {
-                       log.error("create writer to file failed", e);
-                       return null;
-               }
+            } catch (IOException e) {
+               log.error("create writer to file failed",e);
+               return null;
+                       } 
+        } 
                return printerWritersMap;
        }
 
@@ -752,103 +805,4 @@ public class DataMigration {
                }
        }
 
-       public static AuditingGenericEvent createAuditRecord(EnumMap<AuditingFieldsKeysEnum, Object> auditingFields)
-                       throws ParseException {
-               AuditingActionEnum actionEnum = AuditingActionEnum
-                               .getActionByName((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_ACTION));
-               String tableName = actionEnum.getAuditingEsType();
-               AuditingGenericEvent event = null;
-               Date date = null;
-               switch (tableName) {
-               case AuditingTypesConstants.USER_ADMIN_EVENT_TYPE:
-                       UserAdminEvent userAdminEvent = new UserAdminEvent(auditingFields);
-                       date = simpleDateFormat.parse((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP));
-                       userAdminEvent.setTimestamp1(date);
-                       event = userAdminEvent;
-                       break;
-               case AuditingTypesConstants.AUTH_EVENT_TYPE:
-                       AuthEvent authEvent = new AuthEvent(auditingFields);
-                       date = simpleDateFormat.parse((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP));
-                       authEvent.setTimestamp1(date);
-                       event = authEvent;
-                       break;
-               case AuditingTypesConstants.CATEGORY_EVENT_TYPE:
-                       CategoryEvent categoryEvent = new CategoryEvent(auditingFields);
-                       date = simpleDateFormat.parse((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP));
-                       categoryEvent.setTimestamp1(date);
-                       event = categoryEvent;
-                       break;
-               case AuditingTypesConstants.RESOURCE_ADMIN_EVENT_TYPE:
-                       ResourceAdminEvent resourceAdminEvent = new ResourceAdminEvent(auditingFields);
-                       date = simpleDateFormat.parse((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP));
-                       resourceAdminEvent.setTimestamp1(date);
-                       event = resourceAdminEvent;
-                       break;
-               case AuditingTypesConstants.USER_ACCESS_EVENT_TYPE:
-                       event = new UserAccessEvent(auditingFields);
-                       UserAccessEvent userAccessEvent = new UserAccessEvent(auditingFields);
-                       date = simpleDateFormat.parse((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP));
-                       userAccessEvent.setTimestamp1(date);
-                       event = userAccessEvent;
-                       break;
-               case AuditingTypesConstants.DISTRIBUTION_STATUS_EVENT_TYPE:
-                       DistributionStatusEvent distributionStatusEvent = new DistributionStatusEvent(auditingFields);
-                       date = simpleDateFormat.parse((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP));
-                       distributionStatusEvent.setTimestamp1(date);
-                       event = distributionStatusEvent;
-                       break;
-               case AuditingTypesConstants.DISTRIBUTION_DOWNLOAD_EVENT_TYPE:
-                       DistributionDownloadEvent distributionDownloadEvent = new DistributionDownloadEvent(auditingFields);
-                       date = simpleDateFormat.parse((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP));
-                       distributionDownloadEvent.setTimestamp1(date);
-                       event = distributionDownloadEvent;
-                       break;
-               case AuditingTypesConstants.DISTRIBUTION_ENGINE_EVENT_TYPE:
-                       DistributionEngineEvent distributionEngineEvent = new DistributionEngineEvent(auditingFields);
-                       date = simpleDateFormat.parse((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP));
-                       distributionEngineEvent.setTimestamp1(date);
-                       event = distributionEngineEvent;
-                       break;
-               case AuditingTypesConstants.DISTRIBUTION_NOTIFICATION_EVENT_TYPE:
-                       DistributionNotificationEvent distributionNotificationEvent = new DistributionNotificationEvent(
-                                       auditingFields);
-                       date = simpleDateFormat.parse((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP));
-                       distributionNotificationEvent.setTimestamp1(date);
-                       event = distributionNotificationEvent;
-                       break;
-               case AuditingTypesConstants.DISTRIBUTION_DEPLOY_EVENT_TYPE:
-                       DistributionDeployEvent distributionDeployEvent = new DistributionDeployEvent(auditingFields);
-                       date = simpleDateFormat.parse((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP));
-                       distributionDeployEvent.setTimestamp1(date);
-                       event = distributionDeployEvent;
-                       break;
-               case AuditingTypesConstants.DISTRIBUTION_GET_UEB_CLUSTER_EVENT_TYPE:
-                       AuditingGetUebClusterEvent auditingGetUebClusterEvent = new AuditingGetUebClusterEvent(auditingFields);
-                       date = simpleDateFormat.parse((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP));
-                       auditingGetUebClusterEvent.setTimestamp1(date);
-                       event = auditingGetUebClusterEvent;
-                       break;
-               case AuditingTypesConstants.CONSUMER_EVENT_TYPE:
-                       ConsumerEvent consumerEvent = new ConsumerEvent(auditingFields);
-                       date = simpleDateFormat.parse((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP));
-                       consumerEvent.setTimestamp1(date);
-                       event = consumerEvent;
-                       break;
-               case AuditingTypesConstants.GET_USERS_LIST_EVENT_TYPE:
-                       GetUsersListEvent getUsersListEvent = new GetUsersListEvent(auditingFields);
-                       date = simpleDateFormat.parse((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP));
-                       getUsersListEvent.setTimestamp1(date);
-                       event = getUsersListEvent;
-                       break;
-               case AuditingTypesConstants.GET_CATEGORY_HIERARCHY_EVENT_TYPE:
-                       GetCategoryHierarchyEvent getCategoryHierarchyEvent = new GetCategoryHierarchyEvent(auditingFields);
-                       date = simpleDateFormat.parse((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_TIMESTAMP));
-                       getCategoryHierarchyEvent.setTimestamp1(date);
-                       event = getCategoryHierarchyEvent;
-                       break;
-
-               }
-               return event;
-       }
-
 }