Service-restoration implementation
[transportpce.git] / servicehandler / src / test / java / org / opendaylight / transportpce / servicehandler / impl / ServiceHandlerImplTest.java
index 5be6576e32cd446616f284a9a1aebf8d4b98ce8c..6c06e45c21ad222ba670b840c240480268b0d44c 100644 (file)
@@ -8,19 +8,20 @@
 package org.opendaylight.transportpce.servicehandler.impl;
 
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.verify;
+
+import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.MoreExecutors;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
-import java.time.OffsetDateTime;
-import java.time.ZoneOffset;
-import java.time.format.DateTimeFormatter;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
+
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -29,26 +30,34 @@ import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
 import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
-import org.opendaylight.transportpce.common.OperationResult;
+import org.opendaylight.controller.md.sal.binding.api.NotificationService;
 import org.opendaylight.transportpce.common.ResponseCodes;
 import org.opendaylight.transportpce.pce.service.PathComputationService;
-import org.opendaylight.transportpce.pce.service.PathComputationServiceImpl;
-import org.opendaylight.transportpce.pce.utils.NotificationPublishServiceMock;
 import org.opendaylight.transportpce.pce.utils.PceTestData;
 import org.opendaylight.transportpce.pce.utils.PceTestUtils;
+import org.opendaylight.transportpce.renderer.NetworkModelWavelengthService;
 import org.opendaylight.transportpce.renderer.provisiondevice.RendererServiceOperations;
 import org.opendaylight.transportpce.servicehandler.ModelMappingUtils;
 import org.opendaylight.transportpce.servicehandler.ServiceEndpointType;
+import org.opendaylight.transportpce.servicehandler.ServiceInput;
+import org.opendaylight.transportpce.servicehandler.listeners.PceListenerImpl;
+import org.opendaylight.transportpce.servicehandler.listeners.RendererListenerImpl;
 import org.opendaylight.transportpce.servicehandler.service.PCEServiceWrapper;
+import org.opendaylight.transportpce.servicehandler.service.RendererServiceWrapper;
 import org.opendaylight.transportpce.servicehandler.service.ServiceDataStoreOperations;
+import org.opendaylight.transportpce.servicehandler.stub.StubPceServiceOperations;
 import org.opendaylight.transportpce.servicehandler.stub.StubRendererServiceOperations;
+import org.opendaylight.transportpce.servicehandler.utils.MockedNotificationServiceWrapper;
+import org.opendaylight.transportpce.servicehandler.utils.ServiceDataUtils;
 import org.opendaylight.transportpce.servicehandler.validation.checks.ComplianceCheckResult;
 import org.opendaylight.transportpce.test.AbstractTest;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.PathComputationRequestOutput;
-import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev170426.PathComputationRequestOutputBuilder;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ConnectionType;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.PathComputationRequestOutput;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.PathComputationRequestOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.pce.rev171017.TransportpcePceListener;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceDeleteOutputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.TransportpceRendererListener;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.RpcActions;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ServiceFormat;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.ServiceNotificationTypes;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.configuration.response.common.ConfigurationResponseCommon;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.configuration.response.common.ConfigurationResponseCommonBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.sdnc.request.header.SdncRequestHeaderBuilder;
@@ -58,6 +67,7 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev1
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.lgx.LgxBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.port.Port;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service.port.PortBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.RpcStatus;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.State;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceCreateInput;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceCreateInputBuilder;
@@ -65,13 +75,21 @@ import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.Service
 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceDeleteInput;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceDeleteInputBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceDeleteOutput;
-import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.delete.input.ServiceDeleteReqInfo;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceReconfigureInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceReconfigureOutput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceRerouteInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceRerouteOutput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceRestorationInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.ServiceRestorationOutput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.TempServiceCreateInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.TempServiceCreateInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.TempServiceDeleteInput;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.TempServiceDeleteInputBuilder;
+import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.TempServiceDeleteOutput;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.delete.input.ServiceDeleteReqInfoBuilder;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.list.Services;
 import org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.list.ServicesBuilder;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestInput;
-import org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426.ServiceImplementationRequestOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -79,83 +97,147 @@ import org.slf4j.LoggerFactory;
 public class ServiceHandlerImplTest extends AbstractTest {
 
     private static final Logger LOG = LoggerFactory.getLogger(ServiceHandlerImplTest.class);
+    private static final int NUMBER_OF_THREADS = 4;
 
-    private NotificationPublishService notificationPublishService;
     private PathComputationService pathComputationService;
     private RendererServiceOperations rendererServiceOperations;
     private ServicehandlerImpl serviceHandler;
+    private PceListenerImpl pceListenerImpl;
+    private RendererListenerImpl rendererListenerImpl;
+    private ListeningExecutorService executor;
+    private NotificationPublishService notificationPublishService;
+    private NotificationService notificationService;
+    private ListenerRegistration<TransportpcePceListener> pcelistenerRegistration;
+    private ListenerRegistration<TransportpceRendererListener> rendererlistenerRegistration;
+    private MockedNotificationServiceWrapper mockedNotificationServiceWrapper;
 
     @Mock
     private ServiceDataStoreOperations serviceDataStoreOperationsMock;
-
     @Mock
     private PCEServiceWrapper pceServiceWrapperMock;
-
+    @Mock
+    private RendererServiceWrapper rendererServiceWrapperMock;
+    @Mock
+    private PathComputationService pathComputationServiceMock;
     @Mock
     private RendererServiceOperations rendererServiceOperationsMock;
-
     @Mock
     private ComplianceCheckResult complianceCheckResultMock;
-
     @Mock
     private Optional<Services> servicesOptionalMock;
-
+    @Mock
+    private PceListenerImpl pceListenerImplMock;
+    @Mock
+    private RendererListenerImpl rendererListenerImplMock;
+    @Mock
+    private NotificationPublishService notificationPublishServiceMock;
+    @Mock
+    private NetworkModelWavelengthService networkModelWavelengthServiceMock;
     @InjectMocks
     private ServicehandlerImpl serviceHandlerImplMock;
 
     @Before
-    public void setUp() throws Exception {
+    public void setUp() {
         this.serviceHandler = new ServicehandlerImpl(getDataBroker(), this.pathComputationService,
-                this.rendererServiceOperations);
-        this.serviceHandlerImplMock = new ServicehandlerImpl(getDataBroker(), this.pathComputationService, null);
+                this.rendererServiceOperations, this.notificationPublishService, this.pceListenerImpl,
+                this.rendererListenerImpl, this.networkModelWavelengthServiceMock);
+        this.serviceHandlerImplMock =
+                new ServicehandlerImpl(getDataBroker(), this.pathComputationService, this.rendererServiceOperations,
+                        notificationPublishService, pceListenerImpl, rendererListenerImpl, null);
         MockitoAnnotations.initMocks(this);
     }
 
     public ServiceHandlerImplTest() throws Exception {
-        this.notificationPublishService = new NotificationPublishServiceMock();
-        this.pathComputationService = new PathComputationServiceImpl(getDataBroker(), this.notificationPublishService);
+        this.mockedNotificationServiceWrapper = new MockedNotificationServiceWrapper(getNotificationPublishService());
+        this.notificationPublishService = this.mockedNotificationServiceWrapper.getMockedNotificationService();
+        this.notificationService = getNotificationService();
+        this.pathComputationService = new StubPceServiceOperations(notificationPublishService);
+        this.rendererServiceOperations = new StubRendererServiceOperations(this.networkModelWavelengthServiceMock,
+                getDataBroker(), notificationPublishService);
         PceTestUtils.writeTopologyIntoDataStore(getDataBroker(), getDataStoreContextUtil(),
                 "topologyData/NW-simple-topology.xml");
-        this.rendererServiceOperations = new StubRendererServiceOperations(this.notificationPublishService);
+        this.pceListenerImpl =
+                new PceListenerImpl(rendererServiceOperations, pathComputationService, notificationPublishService,
+                        null);
+        this.pceListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperationsMock);
+        this.pceListenerImpl.setServiceReconfigure(false);
+        this.rendererListenerImpl =
+                new RendererListenerImpl(pathComputationServiceMock, notificationPublishService);
+        this.rendererListenerImpl.setserviceDataStoreOperations(this.serviceDataStoreOperationsMock);
+        this.executor = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(NUMBER_OF_THREADS));
+        pcelistenerRegistration = notificationService.registerNotificationListener(pceListenerImpl);
+        rendererlistenerRegistration = notificationService.registerNotificationListener(rendererListenerImpl);
     }
 
-    @Test
-    public void testCreateServiceValid() throws ExecutionException, InterruptedException {
 
-        ServiceCreateInput serviceInput = buildServiceCreateInput();
 
-        Future<RpcResult<ServiceCreateOutput>> output0 = this.serviceHandler.serviceCreate(serviceInput);
+    @Test
+    public void testCreateServiceValid() throws ExecutionException, InterruptedException {
+        ServiceCreateInput serviceInput = ServiceDataUtils.buildServiceCreateInput();
+        ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
+                .setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO).setRequestId("1")
+                .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("PCE calculation in progress").build();
+        PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder(
+                PceTestData.getPCE_simpletopology_test1_result((long) 5))
+                        .setConfigurationResponseCommon(configurationResponseCommon).build();
+        Mockito.when(this.pceServiceWrapperMock.performPCE(serviceInput, true))
+            .thenReturn(pathComputationRequestOutput);
+        Future<RpcResult<ServiceCreateOutput>> output0 = this.serviceHandlerImplMock.serviceCreate(serviceInput);
         Assert.assertNotNull(output0);
         Assert.assertTrue(output0.get().isSuccessful());
-        Assert.assertEquals(output0.get().getResult(),
-                ModelMappingUtils.createCreateServiceReply(serviceInput, ResponseCodes.FINAL_ACK_YES,
-                        "Service rendered successfully !", ResponseCodes.RESPONSE_OK).get().getResult());
+        Assert.assertEquals(output0.get().getResult(), ModelMappingUtils.createCreateServiceReply(serviceInput,
+                ResponseCodes.FINAL_ACK_NO,"PCE calculation in progress", ResponseCodes.RESPONSE_OK)
+                        .get().getResult());
         Assert.assertEquals(0, output0.get().getErrors().size());
     }
 
     @Test
     public void createServiceHandlerInvalidIfNameIsEmpty() throws ExecutionException, InterruptedException {
-        ServiceCreateInput emptyServiceNameInput = buildServiceCreateInput();
+        ServiceCreateInput emptyServiceNameInput = ServiceDataUtils.buildServiceCreateInput();
         ServiceCreateInputBuilder builtInput = new ServiceCreateInputBuilder(emptyServiceNameInput);
         emptyServiceNameInput = builtInput.setServiceName("").build();
         Assert.assertEquals(this.serviceHandler.serviceCreate(emptyServiceNameInput).get().getResult(),
                 ModelMappingUtils.createCreateServiceReply(emptyServiceNameInput, ResponseCodes.FINAL_ACK_YES,
-                        "Service Name is not set", ResponseCodes.RESPONSE_FAILED).get().getResult());
+                        "Service Name (common-id for Temp service) is not set", ResponseCodes.RESPONSE_FAILED).get()
+                        .getResult());
     }
 
     @Test
     public void createServiceHandlerInvalidIfNameIsNull() throws ExecutionException, InterruptedException {
-        ServiceCreateInput nullServiceNameInput = buildServiceCreateInput();
+        ServiceCreateInput nullServiceNameInput = ServiceDataUtils.buildServiceCreateInput();
         ServiceCreateInputBuilder builtInput = new ServiceCreateInputBuilder(nullServiceNameInput);
         nullServiceNameInput = builtInput.setServiceName(null).build();
         Assert.assertEquals(this.serviceHandler.serviceCreate(nullServiceNameInput).get().getResult(),
                 ModelMappingUtils.createCreateServiceReply(nullServiceNameInput, ResponseCodes.FINAL_ACK_YES,
-                        "Service Name is not set", ResponseCodes.RESPONSE_FAILED).get().getResult());
+                        "Service Name (common-id for Temp service) is not set", ResponseCodes.RESPONSE_FAILED).get()
+                        .getResult());
+    }
+
+    @Test
+    public void createTempServiceHandlerInvalidIfCommonIdIsEmpty() throws ExecutionException, InterruptedException {
+        TempServiceCreateInput emptyServiceNameInput = ServiceDataUtils.buildTempServiceCreateInput();
+        TempServiceCreateInputBuilder builtInput = new TempServiceCreateInputBuilder(emptyServiceNameInput);
+        emptyServiceNameInput = builtInput.setCommonId("").build();
+        Assert.assertEquals(this.serviceHandler.tempServiceCreate(emptyServiceNameInput).get().getResult(),
+                ModelMappingUtils.createCreateServiceReply(emptyServiceNameInput, ResponseCodes.FINAL_ACK_YES,
+                        "Service Name (common-id for Temp service) is not set", ResponseCodes.RESPONSE_FAILED).get()
+                        .getResult());
+    }
+
+    @Test
+    public void createTempServiceHandlerInvalidIfCommonIdIsNull() throws ExecutionException, InterruptedException {
+        TempServiceCreateInput emptyServiceNameInput = ServiceDataUtils.buildTempServiceCreateInput();
+        TempServiceCreateInputBuilder builtInput = new TempServiceCreateInputBuilder(emptyServiceNameInput);
+        emptyServiceNameInput = builtInput.setCommonId(null).build();
+        Assert.assertEquals(this.serviceHandler.tempServiceCreate(emptyServiceNameInput).get().getResult(),
+                ModelMappingUtils.createCreateServiceReply(emptyServiceNameInput, ResponseCodes.FINAL_ACK_YES,
+                                "Service Name (common-id for Temp service) is not set", ResponseCodes.RESPONSE_FAILED)
+                        .get().getResult());
     }
 
     @Test
     public void createServiceHnadlerInvalidIfConTypeIsEmpty() throws ExecutionException, InterruptedException {
-        ServiceCreateInput emptyConTypeInput = buildServiceCreateInput();
+        ServiceCreateInput emptyConTypeInput = ServiceDataUtils.buildServiceCreateInput();
         ServiceCreateInputBuilder builtInput = new ServiceCreateInputBuilder(emptyConTypeInput);
         emptyConTypeInput = builtInput.setConnectionType(null).build();
         Assert.assertEquals(this.serviceHandler.serviceCreate(emptyConTypeInput).get().getResult(),
@@ -165,7 +247,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
 
     @Test
     public void createServiceHandlerInvalidIfSdncRequestHeaderNull() throws ExecutionException, InterruptedException {
-        ServiceCreateInput emptySdncRequestHeader = buildServiceCreateInput();
+        ServiceCreateInput emptySdncRequestHeader = ServiceDataUtils.buildServiceCreateInput();
         ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(emptySdncRequestHeader);
         emptySdncRequestHeader = buildInput.setSdncRequestHeader(null).build();
         ServiceCreateOutput result = this.serviceHandler.serviceCreate(emptySdncRequestHeader).get().getResult();
@@ -176,7 +258,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
 
     @Test
     public void createServiceHandlerInvalidIfRequestIdEmpty() throws ExecutionException, InterruptedException {
-        ServiceCreateInput emptyRequestId = buildServiceCreateInput();
+        ServiceCreateInput emptyRequestId = ServiceDataUtils.buildServiceCreateInput();
         ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(emptyRequestId);
         emptyRequestId = buildInput
                 .setSdncRequestHeader(
@@ -191,7 +273,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
 
     @Test
     public void createServiceHandlerInvalidIfRequestIdNull() throws ExecutionException, InterruptedException {
-        ServiceCreateInput nullRequestId = buildServiceCreateInput();
+        ServiceCreateInput nullRequestId = ServiceDataUtils.buildServiceCreateInput();
         ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(nullRequestId);
         nullRequestId = buildInput
                 .setSdncRequestHeader(
@@ -206,7 +288,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
 
     @Test
     public void serviceHandlerInvalidServiceActionIsNull() throws ExecutionException, InterruptedException {
-        ServiceCreateInput emptyServiceAction = buildServiceCreateInput();
+        ServiceCreateInput emptyServiceAction = ServiceDataUtils.buildServiceCreateInput();
         ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(emptyServiceAction);
         emptyServiceAction = buildInput.setSdncRequestHeader(
                 new SdncRequestHeaderBuilder(emptyServiceAction.getSdncRequestHeader()).setRpcAction(null).build())
@@ -220,7 +302,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
 
     @Test
     public void serviceHandlerInvalidServiceActionIsNotCreate() throws ExecutionException, InterruptedException {
-        ServiceCreateInput notCreateServiceAction = buildServiceCreateInput();
+        ServiceCreateInput notCreateServiceAction = ServiceDataUtils.buildServiceCreateInput();
         ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(notCreateServiceAction);
         notCreateServiceAction = buildInput
                 .setSdncRequestHeader(new SdncRequestHeaderBuilder(notCreateServiceAction.getSdncRequestHeader())
@@ -236,7 +318,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
 
     @Test
     public void createServiceHandlerNotValidServiceAEndIsNull() throws ExecutionException, InterruptedException {
-        ServiceCreateInput notValidServiceAEnd = buildServiceCreateInput();
+        ServiceCreateInput notValidServiceAEnd = ServiceDataUtils.buildServiceCreateInput();
         ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(notValidServiceAEnd);
         notValidServiceAEnd = buildInput.setServiceAEnd(null).build();
         Assert.assertEquals(this.serviceHandler.serviceCreate(notValidServiceAEnd).get().getResult(),
@@ -246,7 +328,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
 
     @Test
     public void createServiceHandlerNotValidServiceZEndIsNull() throws ExecutionException, InterruptedException {
-        ServiceCreateInput notValidServiceAEnd = buildServiceCreateInput();
+        ServiceCreateInput notValidServiceAEnd = ServiceDataUtils.buildServiceCreateInput();
         ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(notValidServiceAEnd);
         notValidServiceAEnd = buildInput.setServiceZEnd(null).build();
         Assert.assertEquals(this.serviceHandler.serviceCreate(notValidServiceAEnd).get().getResult(),
@@ -256,10 +338,12 @@ public class ServiceHandlerImplTest extends AbstractTest {
 
     @Test
     public void createServiceHandlerNotValidServiceAEndRateIsNull() throws ExecutionException, InterruptedException {
-        ServicehandlerImpl servicehandler = new ServicehandlerImpl(getDataBroker(), this.pathComputationService, null);
-        ServiceCreateInput notValidServiceAEnd = buildServiceCreateInput();
+        ServicehandlerImpl servicehandler =
+                new ServicehandlerImpl(getDataBroker(), this.pathComputationService, null, null, null, null, null);
+        ServiceCreateInput notValidServiceAEnd = ServiceDataUtils.buildServiceCreateInput();
         ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(notValidServiceAEnd);
-        notValidServiceAEnd = buildInput.setServiceAEnd(getServiceAEndBuild().setServiceRate(null).build()).build();
+        notValidServiceAEnd = buildInput.setServiceAEnd(ServiceDataUtils.getServiceAEndBuild().setServiceRate(null)
+                .build()).build();
         Assert.assertEquals(servicehandler.serviceCreate(notValidServiceAEnd).get().getResult(),
                 ModelMappingUtils.createCreateServiceReply(notValidServiceAEnd, ResponseCodes.FINAL_ACK_YES,
                         "Service " + ServiceEndpointType.SERVICEAEND + " rate is not set",
@@ -268,10 +352,12 @@ public class ServiceHandlerImplTest extends AbstractTest {
 
     @Test
     public void createServiceHandlerNotValidServiceZEndRateIsNull() throws ExecutionException, InterruptedException {
-        ServicehandlerImpl servicehandler = new ServicehandlerImpl(getDataBroker(), this.pathComputationService, null);
-        ServiceCreateInput notValidServiceZEnd = buildServiceCreateInput();
+        ServicehandlerImpl servicehandler =
+                new ServicehandlerImpl(getDataBroker(), this.pathComputationService, null, null, null, null, null);
+        ServiceCreateInput notValidServiceZEnd = ServiceDataUtils.buildServiceCreateInput();
         ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(notValidServiceZEnd);
-        notValidServiceZEnd = buildInput.setServiceZEnd(getServiceZEndBuild().setServiceRate(null).build()).build();
+        notValidServiceZEnd = buildInput.setServiceZEnd(ServiceDataUtils.getServiceZEndBuild().setServiceRate(null)
+                .build()).build();
         Assert.assertEquals(servicehandler.serviceCreate(notValidServiceZEnd).get().getResult(),
                 ModelMappingUtils.createCreateServiceReply(notValidServiceZEnd, ResponseCodes.FINAL_ACK_YES,
                         "Service " + ServiceEndpointType.SERVICEZEND + " rate is not set",
@@ -280,10 +366,11 @@ public class ServiceHandlerImplTest extends AbstractTest {
 
     @Test
     public void createServiceHandlerNotValidServiceAEndClliIsNull()
-            throws ExecutionException, InterruptedException, InvocationTargetException, IllegalAccessException {
-        ServiceCreateInput notValidServiceAEnd = buildServiceCreateInput();
+            throws ExecutionException, InterruptedException {
+        ServiceCreateInput notValidServiceAEnd = ServiceDataUtils.buildServiceCreateInput();
         ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(notValidServiceAEnd);
-        notValidServiceAEnd = buildInput.setServiceAEnd(getServiceAEndBuild().setClli(null).build()).build();
+        notValidServiceAEnd = buildInput.setServiceAEnd(ServiceDataUtils.getServiceAEndBuild().setClli(null)
+                .build()).build();
         Assert.assertEquals(this.serviceHandler.serviceCreate(notValidServiceAEnd).get().getResult(),
                 ModelMappingUtils.createCreateServiceReply(notValidServiceAEnd, ResponseCodes.FINAL_ACK_YES,
                         "Service" + ServiceEndpointType.SERVICEAEND + " clli format is not set",
@@ -293,9 +380,10 @@ public class ServiceHandlerImplTest extends AbstractTest {
     @Test
     public void createServiceHandlerNotValidServiceZEndClliIsNull()
             throws ExecutionException, InterruptedException, InvocationTargetException, IllegalAccessException {
-        ServiceCreateInput notValidServiceZEnd = buildServiceCreateInput();
+        ServiceCreateInput notValidServiceZEnd = ServiceDataUtils.buildServiceCreateInput();
         ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(notValidServiceZEnd);
-        notValidServiceZEnd = buildInput.setServiceZEnd(getServiceZEndBuild().setClli(null).build()).build();
+        notValidServiceZEnd = buildInput.setServiceZEnd(ServiceDataUtils.getServiceZEndBuild().setClli(null).build())
+                .build();
         Assert.assertEquals(this.serviceHandler.serviceCreate(notValidServiceZEnd).get().getResult(),
                 ModelMappingUtils.createCreateServiceReply(notValidServiceZEnd, ResponseCodes.FINAL_ACK_YES,
                         "Service" + ServiceEndpointType.SERVICEZEND + " clli format is not set",
@@ -314,9 +402,10 @@ public class ServiceHandlerImplTest extends AbstractTest {
         for (Method method : org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
                 .ServiceAEndBuilder.class.getDeclaredMethods()) {
             if (notValidData.containsKey(method.getName())) {
-                ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(buildServiceCreateInput());
+                ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(ServiceDataUtils
+                        .buildServiceCreateInput());
                 org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
-                    .ServiceAEndBuilder serviceAEndBuilder = getServiceAEndBuild();
+                    .ServiceAEndBuilder serviceAEndBuilder = ServiceDataUtils.getServiceAEndBuild();
                 method.invoke(serviceAEndBuilder, notValidData.get(method.getName()));
                 ServiceCreateOutput result = this.serviceHandler
                         .serviceCreate(buildInput.setServiceAEnd(serviceAEndBuilder.build()).build()).get().getResult();
@@ -340,9 +429,10 @@ public class ServiceHandlerImplTest extends AbstractTest {
         for (Method method : org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
                 .ServiceZEndBuilder.class.getDeclaredMethods()) {
             if (notValidData.containsKey(method.getName())) {
-                ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(buildServiceCreateInput());
+                ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(ServiceDataUtils
+                        .buildServiceCreateInput());
                 org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
-                    .ServiceZEndBuilder serviceZEndBuilder = getServiceZEndBuild();
+                    .ServiceZEndBuilder serviceZEndBuilder = ServiceDataUtils.getServiceZEndBuild();
                 method.invoke(serviceZEndBuilder, notValidData.get(method.getName()));
                 ServiceCreateOutput result = this.serviceHandler
                         .serviceCreate(buildInput.setServiceZEnd(serviceZEndBuilder.build()).build()).get().getResult();
@@ -358,7 +448,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
     public void createServiceHandlerNotValidTxDirectionPort()
             throws InvocationTargetException, IllegalAccessException, ExecutionException, InterruptedException {
         List<String> invalidData = Arrays.asList(null, "");
-        ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+        ServiceCreateInput serviceCreateInput = ServiceDataUtils.buildServiceCreateInput();
         for (Method method : PortBuilder.class.getMethods()) {
             if (method.getName().startsWith("set") && !method.getName().contains("Slot")) {
                 for (Object data : invalidData) {
@@ -379,7 +469,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
     @Test
     public void createServiceHandlerTxDirectionPortIsNull() throws ExecutionException, InterruptedException {
         ServiceCreateOutput result = getTxDirectionPortServiceCreateOutput(null,
-                buildServiceCreateInput().getServiceAEnd().getTxDirection().getLgx());
+            ServiceDataUtils.buildServiceCreateInput().getServiceAEnd().getTxDirection().getLgx());
         Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
                 ResponseCodes.FINAL_ACK_YES);
         Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
@@ -389,7 +479,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
     public void createServiceHandlerNotValidTxDirectionLgx()
             throws InvocationTargetException, IllegalAccessException, ExecutionException, InterruptedException {
         List<String> invalidData = Arrays.asList(null, "");
-        ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+        ServiceCreateInput serviceCreateInput = ServiceDataUtils.buildServiceCreateInput();
         for (Method method : LgxBuilder.class.getMethods()) {
             if (method.getName().startsWith("set")) {
                 for (Object data : invalidData) {
@@ -410,7 +500,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
     @Test
     public void createServiceHandlerTxDirectionLgxIsNull() throws ExecutionException, InterruptedException {
         ServiceCreateOutput result = getTxDirectionPortServiceCreateOutput(
-                buildServiceCreateInput().getServiceAEnd().getTxDirection().getPort(), null);
+            ServiceDataUtils.buildServiceCreateInput().getServiceAEnd().getTxDirection().getPort(), null);
         Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
                 ResponseCodes.FINAL_ACK_YES);
         Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
@@ -418,16 +508,17 @@ public class ServiceHandlerImplTest extends AbstractTest {
 
     private ServiceCreateOutput getTxDirectionPortServiceCreateOutput(Port port, Lgx lgx)
             throws InterruptedException, ExecutionException {
-        ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+        ServiceCreateInput serviceCreateInput = ServiceDataUtils.buildServiceCreateInput();
         org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
-            .ServiceAEndBuilder serviceAEndBuilder = getServiceAEndBuild();
+            .ServiceAEndBuilder serviceAEndBuilder = ServiceDataUtils.getServiceAEndBuild();
         TxDirectionBuilder txDirectionBuilder = new TxDirectionBuilder(
                 serviceCreateInput.getServiceAEnd().getTxDirection());
         txDirectionBuilder.setPort(port);
         txDirectionBuilder.setLgx(lgx);
         serviceAEndBuilder.setTxDirection(txDirectionBuilder.build());
         ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(serviceCreateInput);
-        ServicehandlerImpl serviceHandler = new ServicehandlerImpl(getDataBroker(), this.pathComputationService, null);
+        this.serviceHandler = new ServicehandlerImpl(getDataBroker(), this.pathComputationService, null, null, null,
+                null, null);
         return serviceHandler.serviceCreate(buildInput.setServiceAEnd(serviceAEndBuilder.build()).build()).get()
                 .getResult();
     }
@@ -436,7 +527,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
     public void createServiceHandlerNotValidRxDirectionPort()
             throws InvocationTargetException, IllegalAccessException, ExecutionException, InterruptedException {
         List<String> invalidData = Arrays.asList(null, "");
-        ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+        ServiceCreateInput serviceCreateInput = ServiceDataUtils.buildServiceCreateInput();
         for (Method method : PortBuilder.class.getMethods()) {
             if (method.getName().startsWith("set") && !method.getName().contains("Slot")) {
                 for (Object data : invalidData) {
@@ -456,9 +547,9 @@ public class ServiceHandlerImplTest extends AbstractTest {
 
     @Test
     public void createServiceHandlerRxDirectionPortIsNull()
-            throws InvocationTargetException, IllegalAccessException, ExecutionException, InterruptedException {
+            throws ExecutionException, InterruptedException {
         ServiceCreateOutput result = getRxDirectionPortServiceCreateOutput(null,
-                buildServiceCreateInput().getServiceAEnd().getRxDirection().getLgx());
+            ServiceDataUtils.buildServiceCreateInput().getServiceAEnd().getRxDirection().getLgx());
         Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
                 ResponseCodes.FINAL_ACK_YES);
         Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
@@ -468,7 +559,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
     public void createServiceHandlerNotValidRxDirectionLgx()
             throws InvocationTargetException, IllegalAccessException, ExecutionException, InterruptedException {
         List<String> invalidData = Arrays.asList(null, "");
-        ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+        ServiceCreateInput serviceCreateInput = ServiceDataUtils.buildServiceCreateInput();
         for (Method method : LgxBuilder.class.getMethods()) {
             if (method.getName().startsWith("set")) {
                 for (Object data : invalidData) {
@@ -489,7 +580,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
     @Test
     public void createServiceHandlerRxDirectionLgxIsNull() throws ExecutionException, InterruptedException {
         ServiceCreateOutput result = getRxDirectionPortServiceCreateOutput(
-                buildServiceCreateInput().getServiceAEnd().getRxDirection().getPort(), null);
+            ServiceDataUtils.buildServiceCreateInput().getServiceAEnd().getRxDirection().getPort(), null);
         Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
                 ResponseCodes.FINAL_ACK_YES);
         Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
@@ -497,326 +588,40 @@ public class ServiceHandlerImplTest extends AbstractTest {
 
     @Test
     public void createServiceHandlerResponseCodesNotPassed() throws ExecutionException, InterruptedException {
-        ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
-
-        ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
-                .setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO).setRequestId("1")
-                .setResponseCode(ResponseCodes.RESPONSE_FAILED).setResponseMessage("failed").build();
-        PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder(
-                PceTestData.getPCE_simpletopology_test1_result((long) 5))
-                        .setConfigurationResponseCommon(configurationResponseCommon).build();
-        Mockito.when(this.pceServiceWrapperMock.performPCE(serviceCreateInput, true))
-                .thenReturn(pathComputationRequestOutput);
-        ServiceCreateOutput result = this.serviceHandlerImplMock.serviceCreate(serviceCreateInput).get().getResult();
-        Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
-                ResponseCodes.FINAL_ACK_YES);
-        Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
-        verify(this.pceServiceWrapperMock).performPCE(serviceCreateInput, true);
-    }
-
-    @Test
-    public void createServiceHandlerOperationResultNotPassed() throws ExecutionException, InterruptedException {
-        ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
-        ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
-                .setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO).setRequestId("1")
-                .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("success").build();
-        PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder(
-                PceTestData.getPCE_simpletopology_test1_result((long) 5))
-                        .setConfigurationResponseCommon(configurationResponseCommon).build();
-        Mockito.when(this.pceServiceWrapperMock.performPCE(serviceCreateInput, true))
-                .thenReturn(pathComputationRequestOutput);
-        Mockito.when(this.serviceDataStoreOperationsMock.createService(any(ServiceCreateInput.class),
-                any(PathComputationRequestOutput.class)))
-                .thenReturn(OperationResult.failed(
-                        "Failed to create service " + serviceCreateInput.getServiceName() + " to Service List"));
-        ServiceCreateOutput result = this.serviceHandlerImplMock.serviceCreate(serviceCreateInput).get().getResult();
-        Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
-                ResponseCodes.FINAL_ACK_YES);
-        Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
-        verify(this.serviceDataStoreOperationsMock).createService(any(ServiceCreateInput.class),
-                any(PathComputationRequestOutput.class));
-    }
-
-    @Test
-    public void createServiceHandlerOperationServicePathSaveResultNotPassed()
-            throws ExecutionException, InterruptedException {
-        ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
-        ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
-                .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
-                .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("success").build();
-        PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder(
-                PceTestData.getPCE_simpletopology_test1_result((long) 5))
-                        .setConfigurationResponseCommon(configurationResponseCommon).build();
-        Mockito.when(this.pceServiceWrapperMock.performPCE(serviceCreateInput, true))
-                .thenReturn(pathComputationRequestOutput);
-        Mockito.when(this.serviceDataStoreOperationsMock.createService(any(ServiceCreateInput.class),
-                any(PathComputationRequestOutput.class))).thenReturn(OperationResult.ok("Successful"));
-        Mockito.when(this.serviceDataStoreOperationsMock.createServicePath(any(ServiceCreateInput.class),
-                any(PathComputationRequestOutput.class)))
-                .thenReturn(OperationResult.failed("Failed to create servicePath " + serviceCreateInput.getServiceName()
-                        + " to ServicePath List"));
-        ServiceCreateOutput result = this.serviceHandlerImplMock.serviceCreate(serviceCreateInput).get().getResult();
-        Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
-                ResponseCodes.FINAL_ACK_YES);
-        Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
-        verify(this.serviceDataStoreOperationsMock).createServicePath(any(ServiceCreateInput.class),
-                any(PathComputationRequestOutput.class));
-    }
-
-    @Test
-    public void createServiceHandlerModifyServicePassed() throws ExecutionException, InterruptedException {
-        ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
-        ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
-                .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
-                .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("success").build();
-        PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder(
-                PceTestData.getPCE_simpletopology_test1_result((long) 5))
-                        .setConfigurationResponseCommon(configurationResponseCommon).build();
-        Mockito.when(this.pceServiceWrapperMock.performPCE(serviceCreateInput, true))
-                .thenReturn(pathComputationRequestOutput);
-        Mockito.when(this.serviceDataStoreOperationsMock.createService(any(ServiceCreateInput.class),
-                any(PathComputationRequestOutput.class))).thenReturn(OperationResult.ok("Successful"));
-        Mockito.when(this.serviceDataStoreOperationsMock.createServicePath(any(ServiceCreateInput.class),
-                any(PathComputationRequestOutput.class))).thenReturn(OperationResult.ok("Successful"));
-        ConfigurationResponseCommon configurationResponseCommon2 = new ConfigurationResponseCommonBuilder()
-                .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
-                .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("successful").build();
-
-        Mockito.when(
-                this.rendererServiceOperationsMock.serviceImplementation(any(ServiceImplementationRequestInput.class)))
-                .thenReturn(new ServiceImplementationRequestOutputBuilder()
-                        .setConfigurationResponseCommon(configurationResponseCommon2).build());
-        Mockito.when(this.serviceDataStoreOperationsMock.modifyService(serviceCreateInput.getServiceName(),
-                State.InService, State.InService)).thenReturn(OperationResult.ok("successful"));
-        ServiceCreateOutput result = this.serviceHandlerImplMock.serviceCreate(serviceCreateInput).get().getResult();
-        Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
-                ResponseCodes.FINAL_ACK_YES);
-        Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_OK);
-        verify(this.serviceDataStoreOperationsMock).modifyService(serviceCreateInput.getServiceName(), State.InService,
-                State.InService);
-    }
-
-    @Test
-    public void createServiceHandlerModifyServiceNotPassed() throws ExecutionException, InterruptedException {
-        ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
-        ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
-                .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
-                .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("success").build();
-        PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder(
-                PceTestData.getPCE_simpletopology_test1_result((long) 5))
-                        .setConfigurationResponseCommon(configurationResponseCommon).build();
-        Mockito.when(this.pceServiceWrapperMock.performPCE(serviceCreateInput, true))
-                .thenReturn(pathComputationRequestOutput);
-        Mockito.when(this.serviceDataStoreOperationsMock.createService(any(ServiceCreateInput.class),
-                any(PathComputationRequestOutput.class))).thenReturn(OperationResult.ok("Successful"));
-        Mockito.when(this.serviceDataStoreOperationsMock.createServicePath(any(ServiceCreateInput.class),
-                any(PathComputationRequestOutput.class))).thenReturn(OperationResult.ok("Successful"));
-        ConfigurationResponseCommon configurationResponseCommon2 = new ConfigurationResponseCommonBuilder()
-                .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
-                .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("successful").build();
-
-        Mockito.when(
-                this.rendererServiceOperationsMock.serviceImplementation(any(ServiceImplementationRequestInput.class)))
-                .thenReturn(new ServiceImplementationRequestOutputBuilder()
-                        .setConfigurationResponseCommon(configurationResponseCommon2).build());
-        Mockito.when(this.serviceDataStoreOperationsMock.modifyService(serviceCreateInput.getServiceName(),
-                State.InService, State.InService)).thenReturn(OperationResult.failed("failure"));
-        ServiceCreateOutput result = this.serviceHandlerImplMock.serviceCreate(serviceCreateInput).get().getResult();
-        Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
-                ResponseCodes.FINAL_ACK_YES);
-        Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_OK);
-        verify(this.serviceDataStoreOperationsMock).modifyService(serviceCreateInput.getServiceName(), State.InService,
-                State.InService);
-    }
-
-    @Test
-    public void createServiceHandlerServiceImplementationNotPassed() throws ExecutionException, InterruptedException {
-        ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+        ServiceCreateInput serviceCreateInput = ServiceDataUtils.buildServiceCreateInput();
         ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
                 .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
-                .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("success").build();
+                .setResponseCode(ResponseCodes.RESPONSE_FAILED).setResponseMessage("PCE calculation failed").build();
         PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder(
                 PceTestData.getPCE_simpletopology_test1_result((long) 5))
                         .setConfigurationResponseCommon(configurationResponseCommon).build();
         Mockito.when(this.pceServiceWrapperMock.performPCE(serviceCreateInput, true))
                 .thenReturn(pathComputationRequestOutput);
-        Mockito.when(this.serviceDataStoreOperationsMock.createService(any(ServiceCreateInput.class),
-                any(PathComputationRequestOutput.class))).thenReturn(OperationResult.ok("Successful"));
-        Mockito.when(this.serviceDataStoreOperationsMock.createServicePath(any(ServiceCreateInput.class),
-                any(PathComputationRequestOutput.class))).thenReturn(OperationResult.ok("Successful"));
-        ConfigurationResponseCommon configurationResponseCommon2 = new ConfigurationResponseCommonBuilder()
-                .setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO).setRequestId("1")
-                .setResponseCode(ResponseCodes.RESPONSE_FAILED).setResponseMessage("failure").build();
-
-        Mockito.when(
-                this.rendererServiceOperationsMock.serviceImplementation(any(ServiceImplementationRequestInput.class)))
-                .thenReturn(new ServiceImplementationRequestOutputBuilder()
-                        .setConfigurationResponseCommon(configurationResponseCommon2).build());
-        Mockito.when(this.serviceDataStoreOperationsMock.deleteService(serviceCreateInput.getServiceName()))
-                .thenReturn(OperationResult.ok("successful"));
-        Mockito.when(this.serviceDataStoreOperationsMock.deleteServicePath(serviceCreateInput.getServiceName()))
-                .thenReturn(OperationResult.ok("successful"));
         ServiceCreateOutput result = this.serviceHandlerImplMock.serviceCreate(serviceCreateInput).get().getResult();
-        Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
-                ResponseCodes.FINAL_ACK_YES);
         Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
-        verify(this.serviceDataStoreOperationsMock).deleteService(serviceCreateInput.getServiceName());
-        verify(this.serviceDataStoreOperationsMock).deleteServicePath(serviceCreateInput.getServiceName());
-    }
-
-    @Test
-    public void createServiceHandlerServiceImplementationNotPassed2() throws ExecutionException, InterruptedException {
-        ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
-        ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
-                .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
-                .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("success").build();
-        PathComputationRequestOutput pathComputationRequestOutput = new PathComputationRequestOutputBuilder(
-                PceTestData.getPCE_simpletopology_test1_result((long) 5))
-                        .setConfigurationResponseCommon(configurationResponseCommon).build();
-        Mockito.when(this.pceServiceWrapperMock.performPCE(serviceCreateInput, true))
-                .thenReturn(pathComputationRequestOutput);
-        Mockito.when(this.serviceDataStoreOperationsMock.createService(any(ServiceCreateInput.class),
-                any(PathComputationRequestOutput.class))).thenReturn(OperationResult.ok("Successful"));
-        Mockito.when(this.serviceDataStoreOperationsMock.createServicePath(any(ServiceCreateInput.class),
-                any(PathComputationRequestOutput.class))).thenReturn(OperationResult.ok("Successful"));
-        ConfigurationResponseCommon configurationResponseCommon2 = new ConfigurationResponseCommonBuilder()
-                .setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO).setRequestId("1")
-                .setResponseCode(ResponseCodes.RESPONSE_FAILED).setResponseMessage("failure").build();
-
-        Mockito.when(
-                this.rendererServiceOperationsMock.serviceImplementation(any(ServiceImplementationRequestInput.class)))
-                .thenReturn(new ServiceImplementationRequestOutputBuilder()
-                        .setConfigurationResponseCommon(configurationResponseCommon2).build());
-        Mockito.when(this.serviceDataStoreOperationsMock.deleteService(serviceCreateInput.getServiceName()))
-                .thenReturn(OperationResult.failed("successful"));
-        Mockito.when(this.serviceDataStoreOperationsMock.deleteServicePath(serviceCreateInput.getServiceName()))
-                .thenReturn(OperationResult.failed("successful"));
-        ServiceCreateOutput result = this.serviceHandlerImplMock.serviceCreate(serviceCreateInput).get().getResult();
-        Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
-                ResponseCodes.FINAL_ACK_YES);
-        Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
-        verify(this.serviceDataStoreOperationsMock).deleteService(serviceCreateInput.getServiceName());
-        verify(this.serviceDataStoreOperationsMock).deleteServicePath(serviceCreateInput.getServiceName());
     }
 
     private ServiceCreateOutput getRxDirectionPortServiceCreateOutput(Port port, Lgx lgx)
             throws InterruptedException, ExecutionException {
-        ServiceCreateInput serviceCreateInput = buildServiceCreateInput();
+        ServiceCreateInput serviceCreateInput = ServiceDataUtils.buildServiceCreateInput();
         org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
-            .ServiceAEndBuilder serviceAEndBuilder = getServiceAEndBuild();
+            .ServiceAEndBuilder serviceAEndBuilder = ServiceDataUtils.getServiceAEndBuild();
         RxDirectionBuilder rxDirectionBuilder = new RxDirectionBuilder(
                 serviceCreateInput.getServiceAEnd().getRxDirection());
         rxDirectionBuilder.setPort(port);
         rxDirectionBuilder.setLgx(lgx);
         serviceAEndBuilder.setRxDirection(rxDirectionBuilder.build());
         ServiceCreateInputBuilder buildInput = new ServiceCreateInputBuilder(serviceCreateInput);
-        ServicehandlerImpl serviceHandler = new ServicehandlerImpl(getDataBroker(), this.pathComputationService, null);
+        this.serviceHandler = new ServicehandlerImpl(getDataBroker(), this.pathComputationService, null, null, null,
+                null, null);
         return serviceHandler.serviceCreate(buildInput.setServiceAEnd(serviceAEndBuilder.build()).build()).get()
                 .getResult();
     }
 
-    private static ServiceCreateInput buildServiceCreateInput() {
-
-        ServiceCreateInputBuilder builtInput = new ServiceCreateInputBuilder();
-        org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
-            .ServiceAEnd serviceAEnd = getServiceAEndBuild()
-                .build();
-        org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
-            .ServiceZEnd serviceZEnd = new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service
-                .create.input.ServiceZEndBuilder()
-                .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-3-2")
-                .setTxDirection(
-                        new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service
-                            .endpoint.TxDirectionBuilder()
-                                .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
-                                        .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
-                                        .setPortSubSlot("port subslot").setPortType("port type").build())
-                                .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name")
-                                        .setLgxPortName("lgx port name").setLgxPortRack("lgx port rack")
-                                        .setLgxPortShelf("lgx port shelf").build())
-                                .build())
-                .setRxDirection(
-                        new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service
-                            .endpoint.RxDirectionBuilder()
-                                .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
-                                        .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
-                                        .setPortSubSlot("port subslot").setPortType("port type").build())
-                                .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name")
-                                        .setLgxPortName("lgx port name").setLgxPortRack("lgx port rack")
-                                        .setLgxPortShelf("lgx port shelf").build())
-                                .build())
-                .build();
-
-        builtInput.setCommonId("commonId");
-        builtInput.setConnectionType(ConnectionType.Service);
-        builtInput.setCustomer("Customer");
-        builtInput.setServiceName("service 1");
-        builtInput.setServiceAEnd(serviceAEnd);
-        builtInput.setServiceZEnd(serviceZEnd);
-        builtInput.setSdncRequestHeader(new SdncRequestHeaderBuilder().setRequestId("request 1")
-                .setRpcAction(RpcActions.ServiceCreate).build());
-
-        return builtInput.build();
-    }
-
-    private static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
-        .ServiceAEndBuilder getServiceAEndBuild() {
-        return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
-                .ServiceAEndBuilder()
-                .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2")
-                .setTxDirection(
-                        new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service
-                            .endpoint.TxDirectionBuilder()
-                                .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
-                                        .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
-                                        .setPortSubSlot("port subslot").setPortType("port type").build())
-                                .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name")
-                                        .setLgxPortName("lgx port name").setLgxPortRack("lgx port rack")
-                                        .setLgxPortShelf("lgx port shelf").build())
-                                .build())
-                .setRxDirection(
-                        new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service
-                            .endpoint.RxDirectionBuilder()
-                                .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
-                                        .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
-                                        .setPortSubSlot("port subslot").setPortType("port type").build())
-                                .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name")
-                                        .setLgxPortName("lgx port name").setLgxPortRack("lgx port rack")
-                                        .setLgxPortShelf("lgx port shelf").build())
-                                .build());
-    }
-
-    private static org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
-        .ServiceZEndBuilder getServiceZEndBuild() {
-        return new org.opendaylight.yang.gen.v1.http.org.openroadm.service.rev161014.service.create.input
-                .ServiceZEndBuilder()
-                .setClli("clli").setServiceFormat(ServiceFormat.OC).setServiceRate((long) 1).setNodeId("XPONDER-1-2")
-                .setTxDirection(
-                        new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service
-                            .endpoint.TxDirectionBuilder()
-                                .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
-                                        .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
-                                        .setPortSubSlot("port subslot").setPortType("port type").build())
-                                .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name")
-                                        .setLgxPortName("lgx port name").setLgxPortRack("lgx port rack")
-                                        .setLgxPortShelf("lgx port shelf").build())
-                                .build())
-                .setRxDirection(
-                        new org.opendaylight.yang.gen.v1.http.org.openroadm.common.service.types.rev161014.service
-                            .endpoint.RxDirectionBuilder()
-                                .setPort(new PortBuilder().setPortDeviceName("device name").setPortName("port name")
-                                        .setPortRack("port rack").setPortShelf("port shelf").setPortSlot("port slot")
-                                        .setPortSubSlot("port subslot").setPortType("port type").build())
-                                .setLgx(new LgxBuilder().setLgxDeviceName("lgx device name")
-                                        .setLgxPortName("lgx port name").setLgxPortRack("lgx port rack")
-                                        .setLgxPortShelf("lgx port shelf").build())
-                                .build());
-    }
-
     @Test
     public void deleteServiceInvalidIfServiceNameIsEmpty() throws ExecutionException, InterruptedException {
 
-        ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+        ServiceDeleteInput serviceDeleteInput = ServiceDataUtils.buildServiceDeleteInput();
         ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder(serviceDeleteInput);
         serviceDeleteInput = builder
                 .setServiceDeleteReqInfo(
@@ -831,7 +636,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
     @Test
     public void deleteServiceInvalidIfServiceNameIsNull() throws ExecutionException, InterruptedException {
 
-        ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+        ServiceDeleteInput serviceDeleteInput = ServiceDataUtils.buildServiceDeleteInput();
         ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder(serviceDeleteInput);
         serviceDeleteInput = builder
                 .setServiceDeleteReqInfo(
@@ -843,9 +648,31 @@ public class ServiceHandlerImplTest extends AbstractTest {
         Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
     }
 
+    @Test
+    public void deleteTempServiceInvalidIfCommonIdIsEmpty() throws ExecutionException, InterruptedException {
+        TempServiceDeleteInput serviceDeleteInput = ServiceDataUtils.buildTempServiceDeleteInput();
+        TempServiceDeleteInputBuilder builder = new TempServiceDeleteInputBuilder(serviceDeleteInput);
+        serviceDeleteInput = builder.setCommonId("").build();
+        TempServiceDeleteOutput result = this.serviceHandler.tempServiceDelete(serviceDeleteInput).get().getResult();
+        Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+                ResponseCodes.FINAL_ACK_YES);
+        Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+    }
+
+    @Test
+    public void deleteTempServiceInvalidIfCommonIdIsNull() throws ExecutionException, InterruptedException {
+        TempServiceDeleteInput serviceDeleteInput = ServiceDataUtils.buildTempServiceDeleteInput();
+        TempServiceDeleteInputBuilder builder = new TempServiceDeleteInputBuilder(serviceDeleteInput);
+        serviceDeleteInput = builder.setCommonId(null).build();
+        TempServiceDeleteOutput result = this.serviceHandler.tempServiceDelete(serviceDeleteInput).get().getResult();
+        Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
+                ResponseCodes.FINAL_ACK_YES);
+        Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
+    }
+
     @Test
     public void deleteServiceInvalidIfSdncRequestHeaderIsNull() throws ExecutionException, InterruptedException {
-        ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+        ServiceDeleteInput serviceDeleteInput = ServiceDataUtils.buildServiceDeleteInput();
         ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder(serviceDeleteInput);
         serviceDeleteInput = builder.setSdncRequestHeader(null).build();
         ServiceDeleteOutput result = this.serviceHandler.serviceDelete(serviceDeleteInput).get().getResult();
@@ -858,7 +685,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
     public void deleteServiceInvalidIfSdncRequestHeaderRequestIdIsNull()
             throws ExecutionException, InterruptedException {
 
-        ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+        ServiceDeleteInput serviceDeleteInput = ServiceDataUtils.buildServiceDeleteInput();
         ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder(serviceDeleteInput);
         serviceDeleteInput = builder
                 .setSdncRequestHeader(
@@ -874,7 +701,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
     public void deleteServiceInvalidIfSdncRequestHeaderRequestIdIsEmpty()
             throws ExecutionException, InterruptedException {
 
-        ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+        ServiceDeleteInput serviceDeleteInput = ServiceDataUtils.buildServiceDeleteInput();
         ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder(serviceDeleteInput);
         serviceDeleteInput = builder.setSdncRequestHeader(
                 new SdncRequestHeaderBuilder(builder.getSdncRequestHeader()).setRequestId("").build()).build();
@@ -888,7 +715,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
     public void deleteServiceInvalidIfSdncRequestHeaderServiceActionIsNull()
             throws ExecutionException, InterruptedException {
 
-        ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+        ServiceDeleteInput serviceDeleteInput = ServiceDataUtils.buildServiceDeleteInput();
         ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder(serviceDeleteInput);
         serviceDeleteInput = builder
                 .setSdncRequestHeader(
@@ -904,7 +731,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
     public void deleteServiceInvalidIfSdncRequestHeaderServiceActionIsNotDelete()
             throws ExecutionException, InterruptedException {
 
-        ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+        ServiceDeleteInput serviceDeleteInput = ServiceDataUtils.buildServiceDeleteInput();
         ServiceDeleteInputBuilder builder = new ServiceDeleteInputBuilder(serviceDeleteInput);
         serviceDeleteInput = builder.setSdncRequestHeader(new SdncRequestHeaderBuilder(builder.getSdncRequestHeader())
                 .setRpcAction(RpcActions.ServiceCreate).build()).build();
@@ -918,8 +745,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
     public void deleteServiceIfServiceHandlerCompliancyCheckNotPassed()
             throws ExecutionException, InterruptedException {
 
-        ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
-        ComplianceCheckResult res = new ComplianceCheckResult(false, "");
+        ServiceDeleteInput serviceDeleteInput = ServiceDataUtils.buildServiceDeleteInput();
 
         Mockito.when(this.complianceCheckResultMock.hasPassed()).thenReturn(false);
 
@@ -932,7 +758,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
     @Test
     public void deleteServiceNotPresent() throws ExecutionException, InterruptedException {
 
-        ServiceDeleteOutput result = this.serviceHandler.serviceDelete(buildNotPresentServiceDeleteInput()).get()
+        ServiceDeleteOutput result = this.serviceHandler.serviceDelete(ServiceDataUtils.buildServiceDeleteInput()).get()
                 .getResult();
         Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
                 ResponseCodes.FINAL_ACK_YES);
@@ -942,7 +768,7 @@ public class ServiceHandlerImplTest extends AbstractTest {
     @Test
     public void deleteServiceIfServiceNotPresent() throws ExecutionException, InterruptedException {
 
-        ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+        ServiceDeleteInput serviceDeleteInput = ServiceDataUtils.buildServiceDeleteInput();
         Mockito.when(this.servicesOptionalMock.isPresent()).thenReturn(false);
         ServiceDeleteOutput result = this.serviceHandlerImplMock.serviceDelete(serviceDeleteInput).get().getResult();
         Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
@@ -951,146 +777,177 @@ public class ServiceHandlerImplTest extends AbstractTest {
     }
 
     @Test
-    public void deleteServiceNotPassed() throws ExecutionException, InterruptedException {
-
-        ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
-        Optional<Services> service = Optional.of(new ServicesBuilder().setServiceName("service 1").build());
-        Mockito.when(this.serviceDataStoreOperationsMock.getService("service 1")).thenReturn(service);
-        org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426
-            .ServiceDeleteInput input = ModelMappingUtils
-                .createServiceDeleteInput(serviceDeleteInput);
-        ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
-                .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
-                .setResponseCode(ResponseCodes.RESPONSE_FAILED).setResponseMessage("success").build();
-        org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426
-            .ServiceDeleteOutput output = new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
-                .servicepath.rev170426.ServiceDeleteOutputBuilder()
-                .setConfigurationResponseCommon(configurationResponseCommon).build();
-        Mockito.when(this.rendererServiceOperationsMock.serviceDelete(input)).thenReturn(output);
-        ServiceDeleteOutput result = this.serviceHandlerImplMock.serviceDelete(serviceDeleteInput).get().getResult();
+    public void deleteTempServiceIfTempServiceNotPresent() throws ExecutionException, InterruptedException {
+        TempServiceDeleteInput serviceDeleteInput = ServiceDataUtils.buildTempServiceDeleteInput();
+        Mockito.when(this.servicesOptionalMock.isPresent()).thenReturn(false);
+        TempServiceDeleteOutput result =
+                this.serviceHandlerImplMock.tempServiceDelete(serviceDeleteInput).get().getResult();
         Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
                 ResponseCodes.FINAL_ACK_YES);
         Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_FAILED);
     }
 
     @Test
-    public void deleteServicePathNotPassed() throws ExecutionException, InterruptedException {
-
-        ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+    public void deleteServiceNotPassed() throws ExecutionException, InterruptedException {
+        ServiceDeleteInput serviceDeleteInput = ServiceDataUtils.buildServiceDeleteInput();
         Optional<Services> service = Optional.of(new ServicesBuilder().setServiceName("service 1").build());
         Mockito.when(this.serviceDataStoreOperationsMock.getService("service 1")).thenReturn(service);
-        org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426
-            .ServiceDeleteInput input = ModelMappingUtils
-                .createServiceDeleteInput(serviceDeleteInput);
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+            .ServiceDeleteInput input = ModelMappingUtils.createServiceDeleteInput(
+                    new ServiceInput(serviceDeleteInput));
         ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
                 .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
-                .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("success").build();
-        org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426
-            .ServiceDeleteOutput output = new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
-                .servicepath.rev170426.ServiceDeleteOutputBuilder()
+                .setResponseCode(ResponseCodes.RESPONSE_FAILED).setResponseMessage("Renderer service delete failed !")
+                .build();
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+            .ServiceDeleteOutput output = new ServiceDeleteOutputBuilder()
                 .setConfigurationResponseCommon(configurationResponseCommon).build();
-        Mockito.when(this.rendererServiceOperationsMock.serviceDelete(input)).thenReturn(output);
-        Mockito.when(this.serviceDataStoreOperationsMock
-                .deleteServicePath(serviceDeleteInput.getServiceDeleteReqInfo().getServiceName()))
-                .thenReturn(OperationResult.failed("failed"));
-        Mockito.when(this.serviceDataStoreOperationsMock
-                .deleteService(serviceDeleteInput.getServiceDeleteReqInfo().getServiceName()))
-                .thenReturn(OperationResult.failed("failed"));
+        Mockito.when(this.rendererServiceWrapperMock.performRenderer(input,
+                ServiceNotificationTypes.ServiceDeleteResult)).thenReturn(output);
         ServiceDeleteOutput result = this.serviceHandlerImplMock.serviceDelete(serviceDeleteInput).get().getResult();
         Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
                 ResponseCodes.FINAL_ACK_YES);
-        Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_OK);
+        Assert.assertEquals(ResponseCodes.RESPONSE_FAILED, result.getConfigurationResponseCommon().getResponseCode());
     }
 
     @Test
-    public void deleteServiceOperationNotPassed() throws ExecutionException, InterruptedException {
-
-        ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
+    public void deleteServiceIfServicePresentAndValid() throws ExecutionException, InterruptedException {
+        ServiceDeleteInput serviceDeleteInput = ServiceDataUtils.buildServiceDeleteInput();
         Optional<Services> service = Optional.of(new ServicesBuilder().setServiceName("service 1").build());
         Mockito.when(this.serviceDataStoreOperationsMock.getService("service 1")).thenReturn(service);
-        org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426
-            .ServiceDeleteInput input = ModelMappingUtils
-                .createServiceDeleteInput(serviceDeleteInput);
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+            .ServiceDeleteInput input = ModelMappingUtils.createServiceDeleteInput(
+                    new ServiceInput(serviceDeleteInput));
         ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
-                .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
-                .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("success").build();
-        org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426
-            .ServiceDeleteOutput output = new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
-                .servicepath.rev170426.ServiceDeleteOutputBuilder()
+                .setAckFinalIndicator(ResponseCodes.FINAL_ACK_NO).setRequestId("1")
+                .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("Renderer service delete in progress")
+                .build();
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+            .ServiceDeleteOutput output = new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer
+                .rev171017.ServiceDeleteOutputBuilder()
                 .setConfigurationResponseCommon(configurationResponseCommon).build();
-        Mockito.when(this.rendererServiceOperationsMock.serviceDelete(input)).thenReturn(output);
-        Mockito.when(this.serviceDataStoreOperationsMock
-                .deleteServicePath(serviceDeleteInput.getServiceDeleteReqInfo().getServiceName()))
-                .thenReturn(OperationResult.ok("success"));
-        Mockito.when(this.serviceDataStoreOperationsMock
-                .deleteService(serviceDeleteInput.getServiceDeleteReqInfo().getServiceName()))
-                .thenReturn(OperationResult.ok("success"));
+        Mockito.when(
+                this.rendererServiceWrapperMock.performRenderer(input, ServiceNotificationTypes.ServiceDeleteResult))
+                .thenReturn(output);
         ServiceDeleteOutput result = this.serviceHandlerImplMock.serviceDelete(serviceDeleteInput).get().getResult();
         Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
-                ResponseCodes.FINAL_ACK_YES);
+                ResponseCodes.FINAL_ACK_NO);
         Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_OK);
     }
 
     @Test
-    public void deleteServiceIfServicePresentAndValid() throws ExecutionException, InterruptedException {
+    public void rerouteServiceIsNotPresent() throws ExecutionException, InterruptedException {
+        ServiceRerouteInput input = ServiceDataUtils.buildServiceRerouteInput();
+        ServiceRerouteOutput result = this.serviceHandler.serviceReroute(input).get().getResult();
+        Assert.assertEquals(result.getStatus(), RpcStatus.Failed);
+        Assert.assertEquals(result.getStatusMessage(), "Service 'service 1' is not present");
 
-        ServiceDeleteInput serviceDeleteInput = buildPresentServiceDeleteInput();
-        Optional<Services> service = Optional.of(new ServicesBuilder().setServiceName("service 1").build());
-        Mockito.when(this.serviceDataStoreOperationsMock.getService("service 1")).thenReturn(service);
-        org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426
-            .ServiceDeleteInput input = ModelMappingUtils
-                .createServiceDeleteInput(serviceDeleteInput);
+    }
+
+    @Test
+    public void rerouteServiceIfserviceIsPresent() throws ExecutionException, InterruptedException {
+        ServiceRerouteInput serviceRerouteinput = ServiceDataUtils.buildServiceRerouteInput();
+        ServiceCreateInput serviceInput = ServiceDataUtils.buildServiceCreateInput();
+        Services serviceMock = ModelMappingUtils.mappingServices(serviceInput, null);
+        Optional<Services> service = Optional.of(serviceMock);
+        Mockito.when(this.serviceDataStoreOperationsMock.getService(any(String.class))).thenReturn(service);
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+            .ServiceDeleteInput input = ModelMappingUtils.createServiceDeleteInput(serviceRerouteinput, service.get());
         ConfigurationResponseCommon configurationResponseCommon = new ConfigurationResponseCommonBuilder()
                 .setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES).setRequestId("1")
-                .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("success").build();
-        org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface.servicepath.rev170426
-            .ServiceDeleteOutput output = new org.opendaylight.yang.gen.v1.http.org.transportpce.b.c._interface
-                .servicepath.rev170426.ServiceDeleteOutputBuilder()
+                .setResponseCode(ResponseCodes.RESPONSE_OK).setResponseMessage("Renderer service delete in progress")
+                .build();
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+            .ServiceDeleteOutput output = new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer
+                .rev171017.ServiceDeleteOutputBuilder()
                 .setConfigurationResponseCommon(configurationResponseCommon).build();
-        Mockito.when(this.rendererServiceOperationsMock.serviceDelete(input)).thenReturn(output);
-        Mockito.when(this.serviceDataStoreOperationsMock
-                .deleteServicePath(serviceDeleteInput.getServiceDeleteReqInfo().getServiceName()))
-                .thenReturn(OperationResult.ok("success"));
-        Mockito.when(this.serviceDataStoreOperationsMock
-                .deleteService(serviceDeleteInput.getServiceDeleteReqInfo().getServiceName()))
-                .thenReturn(OperationResult.ok("success"));
-        ServiceDeleteOutput result = this.serviceHandlerImplMock.serviceDelete(serviceDeleteInput).get().getResult();
-        Assert.assertEquals(result.getConfigurationResponseCommon().getAckFinalIndicator(),
-                ResponseCodes.FINAL_ACK_YES);
-        Assert.assertEquals(result.getConfigurationResponseCommon().getResponseCode(), ResponseCodes.RESPONSE_OK);
-    }
-
-    private ServiceDeleteInput buildPresentServiceDeleteInput() {
-        ServiceCreateInput serviceInput = buildServiceCreateInput();
-        Future<RpcResult<ServiceCreateOutput>> output0 = this.serviceHandler.serviceCreate(serviceInput);
-        ServiceDeleteInputBuilder deleteInputBldr = new ServiceDeleteInputBuilder();
-        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
-        OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
-        DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
-        deleteInputBldr.setServiceDeleteReqInfo(new ServiceDeleteReqInfoBuilder().setServiceName("service 1")
-                .setDueDate(datetime).setTailRetention(ServiceDeleteReqInfo.TailRetention.No).build());
-        SdncRequestHeaderBuilder sdncBuilder = new SdncRequestHeaderBuilder();
-        sdncBuilder.setNotificationUrl("notification url");
-        sdncBuilder.setRequestId("request 1");
-        sdncBuilder.setRequestSystemId("request system 1");
-        sdncBuilder.setRpcAction(RpcActions.ServiceDelete);
-        deleteInputBldr.setSdncRequestHeader(sdncBuilder.build());
-        return deleteInputBldr.build();
-    }
-
-    private ServiceDeleteInput buildNotPresentServiceDeleteInput() {
-        ServiceDeleteInputBuilder deleteInputBldr = new ServiceDeleteInputBuilder();
-        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssxxx");
-        OffsetDateTime offsetDateTime = OffsetDateTime.now(ZoneOffset.UTC);
-        DateAndTime datetime = new DateAndTime(dtf.format(offsetDateTime));
-        deleteInputBldr.setServiceDeleteReqInfo(new ServiceDeleteReqInfoBuilder().setServiceName("service 2")
-                .setDueDate(datetime).setTailRetention(ServiceDeleteReqInfo.TailRetention.No).build());
-        SdncRequestHeaderBuilder sdncBuilder = new SdncRequestHeaderBuilder();
-        sdncBuilder.setNotificationUrl("notification url");
-        sdncBuilder.setRequestId("request 1");
-        sdncBuilder.setRequestSystemId("request system 1");
-        sdncBuilder.setRpcAction(RpcActions.ServiceDelete);
-        deleteInputBldr.setSdncRequestHeader(sdncBuilder.build());
-        return deleteInputBldr.build();
+        Mockito.when(
+                this.rendererServiceWrapperMock.performRenderer(input, ServiceNotificationTypes.ServiceDeleteResult))
+                .thenReturn(output);
+        ServiceRerouteOutput result = this.serviceHandlerImplMock.serviceReroute(serviceRerouteinput).get().getResult();
+        Assert.assertEquals(org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.RpcStatus.Successful,
+                result.getStatus());
+        Assert.assertEquals("Renderer service delete in progress", result.getStatusMessage());
+    }
+
+    @Test
+    public void reConfigureServiceIfserviceNotPresent() throws ExecutionException, InterruptedException {
+        ServiceReconfigureInput input = ServiceDataUtils.buildServiceReconfigureInput();
+        ServiceReconfigureOutput result = this.serviceHandler.serviceReconfigure(input).get().getResult();
+        Assert.assertEquals(result.getStatus(), RpcStatus.Failed);
+        Assert.assertEquals(result.getStatusMessage(), "Service 'service 1' is not present");
+    }
+
+    @Test
+    public void reConfigureServiceIfserviceIsPresent() throws ExecutionException, InterruptedException {
+        ServiceReconfigureInput serviceReconfigureInput = ServiceDataUtils.buildServiceReconfigureInput();
+        Services serviceMock = ModelMappingUtils.mappingServices(null, serviceReconfigureInput);
+        Optional<Services> service = Optional.of(serviceMock);
+        Mockito.when(this.serviceDataStoreOperationsMock.getService(any(String.class))).thenReturn(service);
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceDeleteInput input =
+                ModelMappingUtils.createServiceDeleteInput(serviceReconfigureInput);
+        ConfigurationResponseCommon configurationResponseCommon =
+                new ConfigurationResponseCommonBuilder().setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES)
+                        .setRequestId("1").setResponseCode(ResponseCodes.RESPONSE_OK)
+                        .setResponseMessage("Renderer service delete in progress").build();
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceDeleteOutput output =
+                new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+                    .ServiceDeleteOutputBuilder().setConfigurationResponseCommon(configurationResponseCommon).build();
+        Mockito.when(
+                this.rendererServiceWrapperMock.performRenderer(input, ServiceNotificationTypes.ServiceDeleteResult))
+                .thenReturn(output);
+        ServiceReconfigureOutput result =
+                this.serviceHandlerImplMock.serviceReconfigure(serviceReconfigureInput).get().getResult();
+        Assert.assertEquals(org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.RpcStatus.Successful,
+                result.getStatus());
+        Assert.assertEquals("Renderer service delete in progress", result.getStatusMessage());
+    }
+
+    @Test
+    public void restorationServiceIfServiceNotPresent() throws ExecutionException, InterruptedException {
+        ServiceRestorationInput input = ServiceDataUtils.buildServiceRestorationInput();
+        ServiceRestorationOutput result = this.serviceHandler.serviceRestoration(input).get().getResult();
+        Assert.assertEquals(result.getStatus(), RpcStatus.Failed);
+        Assert.assertEquals(result.getStatusMessage(), "Service 'service 1' is not present");
+    }
+
+    @Test
+    public void restorationServiceIfServiceNotDown() throws ExecutionException, InterruptedException {
+        ServiceRestorationInput input = ServiceDataUtils.buildServiceRestorationInput();
+        Services serviceMock = ModelMappingUtils.mappingServices(ServiceDataUtils.buildServiceCreateInput(), null);
+        ServicesBuilder builder = new ServicesBuilder(serviceMock).setAdministrativeState(State.InService)
+                .setOperationalState(State.InService);
+        Optional<Services> service = Optional.of(builder.build());
+        Mockito.when(this.serviceDataStoreOperationsMock.getService(any(String.class))).thenReturn(service);
+        ServiceRestorationOutput result = this.serviceHandlerImplMock.serviceRestoration(input).get().getResult();
+        Assert.assertEquals(RpcStatus.Failed, result.getStatus());
+        Assert.assertEquals("Service 'service 1' is in 'inService' state", result.getStatusMessage());
+    }
+
+    @Test
+    public void restorationServiceIfServicePresentAndDown() throws ExecutionException, InterruptedException {
+        ServiceRestorationInput serviceRestorationInput = ServiceDataUtils.buildServiceRestorationInput();
+        Services serviceMock = ModelMappingUtils.mappingServices(ServiceDataUtils.buildServiceCreateInput(), null);
+        ServicesBuilder builder = new ServicesBuilder(serviceMock).setAdministrativeState(State.OutOfService)
+                .setOperationalState(State.OutOfService);
+        Optional<Services> service = Optional.of(builder.build());
+        Mockito.when(this.serviceDataStoreOperationsMock.getService(any(String.class))).thenReturn(service);
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceDeleteInput input =
+                ModelMappingUtils.createServiceDeleteInput(serviceRestorationInput, serviceMock);
+        ConfigurationResponseCommon configurationResponseCommon =
+                new ConfigurationResponseCommonBuilder().setAckFinalIndicator(ResponseCodes.FINAL_ACK_YES)
+                        .setRequestId("1").setResponseCode(ResponseCodes.RESPONSE_OK)
+                        .setResponseMessage("Renderer service delete in progress").build();
+        org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017.ServiceDeleteOutput output =
+                new org.opendaylight.yang.gen.v1.http.org.opendaylight.transportpce.renderer.rev171017
+                    .ServiceDeleteOutputBuilder().setConfigurationResponseCommon(configurationResponseCommon).build();
+        Mockito.when(
+                this.rendererServiceWrapperMock.performRenderer(input, ServiceNotificationTypes.ServiceDeleteResult))
+                .thenReturn(output);
+        ServiceRestorationOutput result =
+                this.serviceHandlerImplMock.serviceRestoration(serviceRestorationInput).get().getResult();
+        Assert.assertEquals(org.opendaylight.yang.gen.v1.http.org.openroadm.common.types.rev161014.RpcStatus.Successful,
+                result.getStatus());
+        Assert.assertEquals("Renderer service delete in progress", result.getStatusMessage());
     }
 }