@Data
 public class TcaExecutionRequest implements TcaRestApiModel {
 
-    private static final long serialVersionUID = 1L;
-
     private String requestId;
     private String transactionId;
     private TcaPolicy tcaPolicy;
 
                         tcaProcessingService.getTcaExecutionResults(
                                 headers.getOrDefault(REQUEST_ID_HEADER_KEY, headers.get(MessageHeaders.ID)).toString(),
                                 headers.getOrDefault(REQUEST_TRANSACTION_ID_HEADER_KEY, "").toString(),
-                                tcaPolicyWrapper.getTcaPolicy(), cefMessages))
+                                tcaPolicyWrapper, cefMessages))
                 // transform tca execution results to alerts - if not alerts are detected terminate further processing
                 .transform(tcaAlertTransformer, c -> c.requiresReply(false))
                 // post messages to dmaap publisher input channel
 
     @ApiOperation(value = "Applies TCA to provided execution request and generated TCA execution response")
     public ResponseEntity<List<TcaExecutionResponse>> execute(@RequestBody final TcaExecutionRequest
                                                                       tcaExecutionRequest) {
+        
         // process tca execution request
         final List<TcaExecutionContext> executionContexts = tcaProcessingService.getTcaExecutionResults(
                 tcaExecutionRequest.getRequestId(), tcaExecutionRequest.getTransactionId(),
-                tcaExecutionRequest.getTcaPolicy(), TcaUtils.getCefMessagesFromEventListeners
+                tcaPolicyWrapper, TcaUtils.getCefMessagesFromEventListeners
                         (tcaExecutionRequest.getEventListeners()));
         // create execution response
         final List<TcaExecutionResponse> tcaExecutionResponses = executionContexts.stream().map(tcaExecutionContext -> {
 
 import java.util.List;
 
 import org.onap.dcae.analytics.tca.core.service.TcaExecutionContext;
-import org.onap.dcae.analytics.tca.model.policy.TcaPolicy;
+import org.onap.dcae.analytics.tca.web.domain.TcaPolicyWrapper;
 
 /**
  * Provides TCA functionality
      *
      * @param requestId request id associated with tca execution request
      * @param transactionId transaction id associated with the tca execution request
-     * @param tcaPolicy tca policy that needs to be applied to CEF messages
+     * @param tcaPolicyWrapper tca policy that needs to be applied to CEF messages
      * @param cefMessages list of CEF messages that needs to be processed by TCA
      *
      * @return results of TCA Processing
      */
     List<TcaExecutionContext> getTcaExecutionResults(String requestId, String transactionId,
-                                                     TcaPolicy tcaPolicy,
+                                                     TcaPolicyWrapper tcaPolicyWrapper,
                                                      List<String> cefMessages);
 
 
 
 import org.onap.dcae.analytics.tca.core.util.TcaUtils;
 import org.onap.dcae.analytics.tca.core.util.function.calculation.TcaCalculator;
 import org.onap.dcae.analytics.tca.model.policy.TcaPolicy;
+import org.onap.dcae.analytics.tca.web.domain.TcaPolicyWrapper;
 
 /**
  * @author Rajiv Singla
     @Override
     public List<TcaExecutionContext> getTcaExecutionResults(final String requestId,
                                                             final String transactionId,
-                                                            final TcaPolicy tcaPolicy,
+                                                            final TcaPolicyWrapper tcaPolicyWrapper,
                                                             final List<String> cefMessages) {
         // create tca policy deep copy as it should be same for current execution
-        final TcaPolicy tcaPolicyDeepCopy = TcaUtils.getTcaPolicyDeepCopy(tcaPolicy);
+        final TcaPolicy tcaPolicyDeepCopy = TcaUtils.getTcaPolicyDeepCopy(tcaPolicyWrapper.getTcaPolicy());
         // create new request id if not present
         final String executionRequestId = isPresent(requestId) ? requestId : REQUEST_ID_SUPPLIER.get();
         // create transaction id if not present
 
     TcaProcessingService tcaProcessingService = Mockito.mock(TcaProcessingService.class);
     TcaExecutionContext tcaExecutionContext = Mockito.mock(TcaExecutionContext.class);
     List<String> cefMessages = Arrays.asList("Test1", "Test2");
-    TcaPolicy tcaPolicy = Mockito.mock(TcaPolicy.class);
     List<TcaExecutionContext> executionContexts = Arrays.asList(tcaExecutionContext, tcaExecutionContext);
-    Mockito.when(tcaProcessingService.getTcaExecutionResults("requestId", "transactioId", tcaPolicy, cefMessages))
+    Mockito.when(tcaProcessingService.getTcaExecutionResults("requestId", "transactioId", tcaPolicyWrapper, cefMessages))
            .thenReturn(executionContexts);
     TcaRestController restcontroller = new TcaRestController(tcaProcessingService, tcaPolicyWrapper);
     restcontroller.execute(tcaExecutionRequest);
 
 import java.util.List;
 
 import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
 import org.onap.dcae.analytics.tca.core.exception.AnalyticsParsingException;
 import org.onap.dcae.analytics.tca.core.service.TcaAaiEnrichmentContext;
 import org.onap.dcae.analytics.tca.core.service.TcaAbatementContext;
 import org.onap.dcae.analytics.tca.core.service.TcaExecutionContext;
 import org.onap.dcae.analytics.tca.model.facade.TcaAlert;
 import org.onap.dcae.analytics.tca.model.policy.TcaPolicy;
+import org.onap.dcae.analytics.tca.web.domain.TcaPolicyWrapper;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 
         TcaAbatementContext tcaAbatementContext = new TestTcaAbatementContext();
         TcaAaiEnrichmentContext tcaAaiEnrichmentContext = new TestTcaAaiEnrichmentContext();
 
+        TcaPolicyWrapper tcaPolicyWrapper = Mockito.mock(TcaPolicyWrapper.class);
 //        TcaAppProperties tcaAppProperties = new TcaAppProperties(environment);
         String policy = "{\"domain\":\"measurementsForVfScaling\",\"metricsPerEventName\":[{\"eventName\":\"Mfvs_eNodeB_RANKPI\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"resource=vFirewall;type=configuration\",\"policyName\":\"configuration.dcae.microservice.tca.xml\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":4000,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\"},{\"closedLoopControlName\":\"CL-FRWL-HIGH-TRAFFIC-SIG-EA36FE84-9342-5E13-A656-EC5F21309A09\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":20000,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\"},{\"closedLoopControlName\":\"CL-FRWL-HIGH-TRAFFIC-SIG-EA36FE84-9342-5E13-A656-EC5F21309A09\",\"closedLoopEventStatus\":\"ABATED\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":0,\"direction\":\"EQUAL\",\"severity\":\"CRITICAL\"}]},{\"eventName\":\"vLoadBalancer\",\"controlLoopSchemaType\":\"VNF\",\"policyScope\":\"resource=vLoadBalancer;type=configuration\",\"policyName\":\"configuration.dcae.microservice.tca.xml\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":500,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\"},{\"closedLoopControlName\":\"CL-LBAL-LOW-TRAFFIC-SIG-0C5920A6-B564-8035-C878-0E814352BC2B\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":5000,\"direction\":\"GREATER_OR_EQUAL\",\"severity\":\"CRITICAL\"}]},{\"eventName\":\"virtualVMEventName\",\"controlLoopSchemaType\":\"VM\",\"policyScope\":\"resource=virtualVM;type=configuration\",\"policyName\":\"configuration.dcae.microservice.tca.xml\",\"policyVersion\":\"v0.0.1\",\"thresholds\":[{\"closedLoopControlName\":\"CL-LBAL-LOW-TRAFFIC-SIG-FB480F95-A453-6F24-B767-FD703241AB1A\",\"closedLoopEventStatus\":\"ONSET\",\"version\":\"1.0.2\",\"fieldPath\":\"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated\",\"thresholdValue\":500,\"direction\":\"LESS_OR_EQUAL\",\"severity\":\"MAJOR\"}]}]}";
 //        TcaPolicyWrapper tcaPolicyWrapper = new TcaPolicyWrapper(tcaAppProperties);
         TcaPolicy  tcaPolicy = convertTcaPolicy(policy);
+        Mockito.when(tcaPolicyWrapper.getTcaPolicy()).thenReturn(tcaPolicy);
         TcaProcessingService tcaProcessingService = new TcaProcessingServiceImpl(tcaAbatementContext, tcaAaiEnrichmentContext);
 
         String cefMessage = "{\r\n" + 
 
         ObjectMapper objectMapper = new ObjectMapper();
         final List<TcaExecutionContext> tcaExecutionResults = tcaProcessingService.getTcaExecutionResults(
-                "testRequestId", "testTransactionId", tcaPolicy,
+                "testRequestId", "testTransactionId", tcaPolicyWrapper,
                 Arrays.asList(cefMessage, cefViolationMessage,
                         cefAbatementMessage,
                         cefInapplicableMessage));