diff --git a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/AbstractP4RuntimePipelineProgrammable.java b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/AbstractP4RuntimePipelineProgrammable.java
index 1272305..911c5ed 100644
--- a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/AbstractP4RuntimePipelineProgrammable.java
+++ b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/AbstractP4RuntimePipelineProgrammable.java
@@ -73,19 +73,6 @@
         }
 
         try {
-            if (!client.setPipelineConfig(pipeconf, deviceDataBuffer).get()) {
-                log.warn("Unable to deploy pipeconf {} to {}", pipeconf.id(), deviceId);
-                return false;
-            }
-        } catch (InterruptedException | ExecutionException e) {
-            log.error("Exception while deploying pipeconf to {}", deviceId, e);
-            return false;
-        }
-
-        try {
-            // It would make more sense to init the stream channel once the client
-            // is created, but P4runtime would reject any command if a P4info has
-            // not been set first.
             if (!client.initStreamChannel().get()) {
                 log.warn("Unable to init stream channel to {}.", deviceId);
                 return false;
@@ -95,6 +82,15 @@
             return false;
         }
 
+        try {
+            if (!client.setPipelineConfig(pipeconf, deviceDataBuffer).get()) {
+                log.warn("Unable to deploy pipeconf {} to {}", pipeconf.id(), deviceId);
+                return false;
+            }
+        } catch (InterruptedException | ExecutionException e) {
+            log.error("Exception while deploying pipeconf to {}", deviceId, e);
+            return false;
+        }
         return true;
     }
 
diff --git a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/P4RuntimeHandshaker.java b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/P4RuntimeHandshaker.java
index 8416786..7e41a99 100644
--- a/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/P4RuntimeHandshaker.java
+++ b/drivers/p4runtime/src/main/java/org/onosproject/drivers/p4runtime/P4RuntimeHandshaker.java
@@ -60,10 +60,30 @@
 
     @Override
     public CompletableFuture<MastershipRole> roleChanged(MastershipRole newRole) {
+        deviceId = handler().data().deviceId();
+        controller = handler().get(P4RuntimeController.class);
         CompletableFuture<MastershipRole> result = new CompletableFuture<>();
-        log.warn("roleChanged not implemented");
-        result.complete(MastershipRole.MASTER);
-        // TODO.
+
+        client = controller.getClient(deviceId);
+        if (client == null || !controller.isReacheable(deviceId)) {
+            result.complete(MastershipRole.STANDBY);
+            return result;
+        }
+        if (newRole.equals(MastershipRole.MASTER)) {
+            client.sendMasterArbitrationUpdate().thenAcceptAsync(success -> {
+                if (!success) {
+                    log.warn("Device {} arbitration failed", deviceId);
+                    result.complete(MastershipRole.STANDBY);
+                } else {
+                    result.complete(MastershipRole.MASTER);
+                }
+            });
+        } else {
+            // Since we don't need to do anything, we can complete it directly
+            // Spec: The client with the highest election id is referred to as the
+            // "master", while all other clients are referred to as "slaves".
+            result.complete(newRole);
+        }
         return result;
     }
 }
