--- /dev/null
+/*
+ * ============LICENSE_START=======================================================
+ * PROJECT
+ * ================================================================================
+ * Copyright (C) 2019 VMware, Inc. All rights reserved.
+ * Copyright (C) 2019 Nokia. All rights reserved.s
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.dcae.common;
+
+import java.util.Collections;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import javax.servlet.http.HttpServletRequest;
+import org.springframework.http.HttpHeaders;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author nil
+ */
+@Component
+public final class HeaderUtils {
+
+  public String getApiVerFilePath(String fileName) {
+    return Objects.requireNonNull(ClassLoader.getSystemClassLoader().getResource(fileName))
+        .getPath();
+  }
+
+  public String getRestApiIdentify(String uri) {
+    return isBatchRequest(uri) ? "eventListener_eventBatch" : "eventListener";
+  }
+
+  public Map<String, String> extractHeaders(HttpServletRequest request) {
+    return Collections.list(request.getHeaderNames()).stream()
+        .collect(Collectors.toMap(h -> h, request::getHeader));
+  }
+
+  public HttpHeaders fillHeaders(Map<String, String> headers) {
+    HttpHeaders httpHeaders = new HttpHeaders();
+    httpHeaders.setAll(headers);
+    return httpHeaders;
+  }
+
+  private boolean isBatchRequest(String request) {
+    return request.contains("eventBatch");
+  }
+}
 
     SCHEMA_VALIDATION_FAILED(ExceptionType.SERVICE_EXCEPTION, "SVC0002", "Bad Parameter (JSON does not conform to schema)", 400),
     INVALID_CONTENT_TYPE(ExceptionType.SERVICE_EXCEPTION, "SVC0002", "Bad Parameter (Incorrect request Content-Type)", 400),
     UNAUTHORIZED_USER(ExceptionType.POLICY_EXCEPTION, "POL2000", "Unauthorized user", 401),
+    INVALID_CUSTOM_HEADER(ExceptionType.SERVICE_EXCEPTION, "SVC0002", "Bad Parameter (Incorrect request api version)", 400),
     NO_SERVER_RESOURCES(ExceptionType.SERVICE_EXCEPTION, "SVC1000", "No server resources (internal processing queue full)", 503);
 
     public final int httpStatusCode;
 
 import org.onap.dcae.common.EventSender;
 import org.onap.dcae.common.VESLogger;
 import org.onap.dcae.common.EventUpdater;
+import org.onap.dcae.common.HeaderUtils;
+import org.onap.dcaegen2.services.sdk.standardization.header.CustomHeaderUtils;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
     private final ApplicationSettings settings;
     private final Logger requestLogger;
     private EventSender eventSender;
+    private final HeaderUtils headerUtils;
 
     @Autowired
     VesRestController(ApplicationSettings settings,
-                      @Qualifier("incomingRequestsLogger") Logger incomingRequestsLogger,
-                      @Qualifier("eventSender") EventSender eventSender) {
+        @Qualifier("incomingRequestsLogger") Logger incomingRequestsLogger,
+        @Qualifier("eventSender") EventSender eventSender, HeaderUtils headerUtils) {
         this.settings = settings;
         this.requestLogger = incomingRequestsLogger;
         this.eventSender = eventSender;
+        this.headerUtils = headerUtils;
     }
 
     @PostMapping(value = {"/eventListener/{version}"}, consumes = "application/json")
     }
 
     private ResponseEntity<String> process(String events, String version, HttpServletRequest request, String type) {
+        CustomHeaderUtils headerUtils = createHeaderUtils(version, request);
+        if(headerUtils.isOkCustomHeaders()){
+            JSONObject jsonObject = new JSONObject(events);
 
-        JSONObject jsonObject = new JSONObject(events);
+            EventValidator eventValidator = new EventValidator(settings);
+            Optional<ResponseEntity<String>> validationResult = eventValidator.validate(jsonObject, type, version);
 
-        EventValidator eventValidator = new EventValidator(settings);
-        Optional<ResponseEntity<String>> validationResult = eventValidator.validate(jsonObject, type, version);
-
-        if (validationResult.isPresent()){
-            return validationResult.get();
+            if (validationResult.isPresent()){
+                return validationResult.get();
+            }
+            JSONArray arrayOfEvents = new EventUpdater(settings).convert(jsonObject,version, generateUUID(version, request.getRequestURI(), jsonObject), type);
+            eventSender.send(arrayOfEvents);
+            // TODO call service and return status, replace CambriaClient, split event to single object and list of them
+            return accepted().headers(this.headerUtils.fillHeaders(headerUtils.getRspCustomHeader()))
+                .contentType(MediaType.APPLICATION_JSON).body("Accepted");
         }
-        JSONArray arrayOfEvents = new EventUpdater(settings).convert(jsonObject,version, generateUUID(version, request.getRequestURI(), jsonObject), type);
-        eventSender.send(arrayOfEvents);
-        // TODO call service and return status, replace CambriaClient, split event to single object and list of them
-        return accepted().contentType(MediaType.APPLICATION_JSON).body("Accepted");
+        return badRequest().body(String.format(ApiException.INVALID_CUSTOM_HEADER.toString()));
+    }
+
+    private CustomHeaderUtils createHeaderUtils(String version, HttpServletRequest request){
+        return  new CustomHeaderUtils(version.toLowerCase().replace("v", ""),
+            headerUtils.extractHeaders(request),
+            headerUtils.getApiVerFilePath("api_version_config.json"),
+            headerUtils.getRestApiIdentify(request.getRequestURI()));
+
     }
 
     private UUID generateUUID(String version, String uri, JSONObject jsonObject) {