diff --git a/src/main/java/org/onosproject/segmentrouting/pwaas/L2TunnelHandler.java b/src/main/java/org/onosproject/segmentrouting/pwaas/L2TunnelHandler.java
index 74ddae5..72c7eac 100644
--- a/src/main/java/org/onosproject/segmentrouting/pwaas/L2TunnelHandler.java
+++ b/src/main/java/org/onosproject/segmentrouting/pwaas/L2TunnelHandler.java
@@ -811,7 +811,7 @@
                 .addCondition(Criteria.matchVlanId(outerTag))
                 .withPriority(SegmentRoutingService.DEFAULT_PRIORITY)
                 .permit()
-                .fromApp(srManager.appId);
+                .fromApp(srManager.appId());
     }
 
     /**
@@ -844,7 +844,7 @@
         trafficTreatment.setOutput(egressPort);
 
         return DefaultForwardingObjective.builder()
-                .fromApp(srManager.appId)
+                .fromApp(srManager.appId())
                 .makePermanent()
                 .nextStep(nextId)
                 .withPriority(SegmentRoutingService.DEFAULT_PRIORITY)
@@ -872,7 +872,7 @@
         trafficSelector.matchInPort(inPort);
 
         return DefaultForwardingObjective.builder()
-                .fromApp(srManager.appId)
+                .fromApp(srManager.appId())
                 .makePermanent()
                 .nextStep(nextId)
                 .withPriority(SegmentRoutingService.DEFAULT_PRIORITY)
@@ -905,7 +905,7 @@
             nextObjBuilder = DefaultNextObjective
                     .builder()
                     .withType(NextObjective.Type.SIMPLE)
-                    .fromApp(srManager.appId);
+                    .fromApp(srManager.appId());
             // The pw label is the bottom of stack. It has to
             // be different -1.
             if (l2Tunnel.pwLabel().toInt() == MplsLabel.MAX_MPLS) {
@@ -928,7 +928,7 @@
             MplsLabel srLabel;
             try {
                  srLabel = MplsLabel.mplsLabel(
-                         srManager.deviceConfiguration.getIPv4SegmentId(egressId)
+                         srManager.deviceConfiguration().getIPv4SegmentId(egressId)
                  );
             } catch (DeviceConfigNotFoundException e) {
                 log.warn("Sr label not configured");
@@ -942,7 +942,7 @@
             MacAddress ingressMac;
             try {
                 ingressMac = srManager
-                        .deviceConfiguration
+                        .deviceConfiguration()
                         .getDeviceMac(srcCp.deviceId());
             } catch (DeviceConfigNotFoundException e) {
                 log.warn("Was not able to find the ingress mac");
@@ -952,7 +952,7 @@
             MacAddress neighborMac;
             try {
                 neighborMac = srManager
-                        .deviceConfiguration
+                        .deviceConfiguration()
                         .getDeviceMac(dstCp.deviceId());
             } catch (DeviceConfigNotFoundException e) {
                 log.warn("Was not able to find the neighbor mac");
@@ -965,7 +965,7 @@
             nextObjBuilder = DefaultNextObjective
                     .builder()
                     .withType(NextObjective.Type.SIMPLE)
-                    .fromApp(srManager.appId);
+                    .fromApp(srManager.appId());
         }
         treatmentBuilder.setOutput(srcCp.port());
         nextObjBuilder.addTreatment(treatmentBuilder.build());
