diff --git a/apps/newoptical/src/main/java/org/onosproject/newoptical/OpticalPathProvisioner.java b/apps/newoptical/src/main/java/org/onosproject/newoptical/OpticalPathProvisioner.java
index 8dc73c1..7ef2c00 100644
--- a/apps/newoptical/src/main/java/org/onosproject/newoptical/OpticalPathProvisioner.java
+++ b/apps/newoptical/src/main/java/org/onosproject/newoptical/OpticalPathProvisioner.java
@@ -593,11 +593,13 @@
 
             // Avoid inactive links
             if (l.state() == Link.State.INACTIVE) {
+                log.trace("{} is not active", l);
                 return -1.0;
             }
 
             // Avoid cross connect links with used ports
             if (isCrossConnectLink(l) && usedCrossConnectLinkSet.contains(l)) {
+                log.trace("Cross connect {} in use", l);
                 return -1.0;
             }
 
@@ -606,6 +608,7 @@
                 if (hasEnoughBandwidth(l.src()) && hasEnoughBandwidth(l.dst())) {
                     return 1.0;
                 } else {
+                    log.trace("Not enought bandwidth on {}", l);
                     return -1.0;
                 }
             } else {
@@ -639,7 +642,13 @@
                     // Check if enough amount of bandwidth resource remains
                     ContinuousResource resource = Resources.continuous(cp.deviceId(), cp.port(), Bandwidth.class)
                             .resource(bandwidth.bps());
-                    return resourceService.isAvailable(resource);
+                    try {
+                        return resourceService.isAvailable(resource);
+                    } catch (Exception e) {
+                        log.error("Resource service failed checking availability of {}",
+                                  resource, e);
+                        throw e;
+                    }
                 }
             }
             return false;
