diff --git a/core/net/src/main/java/org/onosproject/net/pi/impl/PiPipeconfManager.java b/core/net/src/main/java/org/onosproject/net/pi/impl/PiPipeconfManager.java
index 85d3fc3..000ded3 100644
--- a/core/net/src/main/java/org/onosproject/net/pi/impl/PiPipeconfManager.java
+++ b/core/net/src/main/java/org/onosproject/net/pi/impl/PiPipeconfManager.java
@@ -56,6 +56,7 @@
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
+import static java.lang.String.format;
 import static org.onlab.util.Tools.groupedThreads;
 import static org.slf4j.LoggerFactory.getLogger;
 
@@ -89,7 +90,7 @@
 
     protected ExecutorService executor =
             Executors.newFixedThreadPool(5, groupedThreads("onos/pipipeconfservice",
-                    "pipeline-to-device-%d", log));
+                                                           "pipeline-to-device-%d", log));
 
     protected final ConfigFactory factory =
             new ConfigFactory<DeviceId, PiPipeconfConfig>(
@@ -129,7 +130,11 @@
     @Override
     public void register(PiPipeconf pipeconf) throws IllegalStateException {
         log.warn("Currently using local maps, needs to be moved to a distributed store");
+        if (piPipeconfs.containsKey(pipeconf.id())) {
+            throw new IllegalStateException(format("Pipeconf %s is already registered", pipeconf.id()));
+        }
         piPipeconfs.put(pipeconf.id(), pipeconf);
+        log.info("New pipeconf registered: {}", pipeconf.id());
     }
 
     @Override
@@ -165,7 +170,7 @@
                 } catch (ItemNotFoundException e) {
 
                     log.debug("First time pipeconf {} is used with base driver {}, merging the two",
-                            pipeconfId, baseDriver);
+                              pipeconfId, baseDriver);
                     //extract the behaviours from the pipipeconf.
                     Map<Class<? extends Behaviour>, Class<? extends Behaviour>> behaviours = new HashMap<>();
                     piPipeconf.behaviours().forEach(b -> {
@@ -173,8 +178,8 @@
                     });
 
                     Driver piPipeconfDriver = new DefaultDriver(completeDriverName, baseDriver.parents(),
-                            baseDriver.manufacturer(), baseDriver.hwVersion(), baseDriver.swVersion(),
-                            behaviours, new HashMap<>());
+                                                                baseDriver.manufacturer(), baseDriver.hwVersion(),
+                                                                baseDriver.swVersion(), behaviours, new HashMap<>());
                     //we take the base driver created with the behaviours of the PiPeconf and
                     // merge it with the base driver that was assigned to the device
                     Driver completeDriver = piPipeconfDriver.merge(baseDriver);
diff --git a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2DefaultPipeconfFactory.java b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2DefaultPipeconfFactory.java
index 3004627..1dbab42 100644
--- a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2DefaultPipeconfFactory.java
+++ b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2DefaultPipeconfFactory.java
@@ -38,11 +38,17 @@
     private static final String JSON_PATH = "/default.json";
     private static final String P4INFO_PATH = "/default.p4info";
 
+    private static final PiPipeconf PIPECONF = buildPipeconf();
+
     private Bmv2DefaultPipeconfFactory() {
         // Hides constructor.
     }
 
     static PiPipeconf get() {
+        return PIPECONF;
+    }
+
+    private static PiPipeconf buildPipeconf() {
 
         final URL jsonUrl = Bmv2DefaultPipeconfFactory.class.getResource(JSON_PATH);
         final URL p4InfoUrl = Bmv2DefaultPipeconfFactory.class.getResource(P4INFO_PATH);
diff --git a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2DriversLoader.java b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2DriversLoader.java
index 45fb749..046e93b 100644
--- a/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2DriversLoader.java
+++ b/drivers/bmv2/src/main/java/org/onosproject/drivers/bmv2/Bmv2DriversLoader.java
@@ -17,7 +17,10 @@
 package org.onosproject.drivers.bmv2;
 
 import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.onosproject.net.driver.AbstractDriverLoader;
+import org.onosproject.net.pi.runtime.PiPipeconfService;
 
 /**
  * Loader for P4Runtime device drivers.
@@ -25,7 +28,16 @@
 @Component(immediate = true)
 public class Bmv2DriversLoader extends AbstractDriverLoader {
 
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    protected PiPipeconfService pipeconfService;
+
     public Bmv2DriversLoader() {
         super("/bmv2-drivers.xml");
     }
+
+    @Override
+    public void activate() {
+        pipeconfService.register(Bmv2DefaultPipeconfFactory.get());
+        super.activate();
+    }
 }
diff --git a/providers/general/device/src/main/java/org/onosproject/provider/general/device/impl/GeneralDeviceProvider.java b/providers/general/device/src/main/java/org/onosproject/provider/general/device/impl/GeneralDeviceProvider.java
index ad48e1e..c6df99d 100644
--- a/providers/general/device/src/main/java/org/onosproject/provider/general/device/impl/GeneralDeviceProvider.java
+++ b/providers/general/device/src/main/java/org/onosproject/provider/general/device/impl/GeneralDeviceProvider.java
@@ -391,11 +391,6 @@
             if (pipelineProg.getDefaultPipeconf().isPresent()) {
                 PiPipeconf defaultPipeconf = pipelineProg.getDefaultPipeconf().get();
                 log.info("Using default pipeconf {} for {}", defaultPipeconf.id(), deviceId);
-                // Register default one if it is not.
-                // TODO: this should be performed at driver loading.
-                if (!piPipeconfService.getPipeconf(defaultPipeconf.id()).isPresent()) {
-                    piPipeconfService.register(defaultPipeconf);
-                }
                 return defaultPipeconf.id();
             } else {
                 return null;
