diff --git a/src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java b/src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java
index 45e11d8806312b10b4ccd3092cb5cc87d4bf0539..a45a4bc28846895f77a44dbfb7260170fdb94b79 100644
--- a/src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java
+++ b/src/policy/src/main/java/eu/teraflow/policy/PolicyServiceImpl.java
@@ -146,13 +146,10 @@ public class PolicyServiceImpl implements PolicyService {
         final var policyRuleBasic = policyRuleService.getPolicyRuleBasic();
         policyRuleBasic.setPolicyRuleState(INSERTED_POLICYRULE_STATE);
 
-        new Thread(
-                        () -> {
-                            validateService(policyRuleService);
-                        })
-                .start();
-
-        contextService.setPolicyRule(policyRuleBasic);
+        contextService
+                .setPolicyRule(policyRuleBasic)
+                .subscribe()
+                .with(id -> validateService(policyRuleService));
 
         return Uni.createFrom().item(policyRuleBasic.getPolicyRuleState());
     }
@@ -164,13 +161,10 @@ public class PolicyServiceImpl implements PolicyService {
         final var policyRuleBasic = policyRuleService.getPolicyRuleBasic();
         policyRuleBasic.setPolicyRuleState(UPDATED_POLICYRULE_STATE);
 
-        new Thread(
-                        () -> {
-                            validateUpdatedPolicyService(policyRuleService);
-                        })
-                .start();
-
-        contextService.setPolicyRule(policyRuleBasic);
+        contextService
+                .setPolicyRule(policyRuleBasic)
+                .subscribe()
+                .with(id -> validateUpdatedPolicyService(policyRuleService));
 
         return Uni.createFrom().item(policyRuleBasic.getPolicyRuleState());
     }
@@ -182,13 +176,10 @@ public class PolicyServiceImpl implements PolicyService {
         final var policyRuleBasic = policyRuleDevice.getPolicyRuleBasic();
         policyRuleBasic.setPolicyRuleState(INSERTED_POLICYRULE_STATE);
 
-        new Thread(
-                        () -> {
-                            validateDevice(policyRuleDevice);
-                        })
-                .start();
-
-        contextService.setPolicyRule(policyRuleBasic);
+        contextService
+                .setPolicyRule(policyRuleBasic)
+                .subscribe()
+                .with(id -> validateDevice(policyRuleDevice));
         return Uni.createFrom().item(policyRuleBasic.getPolicyRuleState());
     }
 
@@ -199,13 +190,10 @@ public class PolicyServiceImpl implements PolicyService {
         final var policyRuleBasic = policyRuleDevice.getPolicyRuleBasic();
         policyRuleBasic.setPolicyRuleState(UPDATED_POLICYRULE_STATE);
 
-        new Thread(
-                        () -> {
-                            validateUpdatedPolicyDevice(policyRuleDevice);
-                        })
-                .start();
-
-        contextService.setPolicyRule(policyRuleBasic);
+        contextService
+                .setPolicyRule(policyRuleBasic)
+                .subscribe()
+                .with(id -> validateUpdatedPolicyDevice(policyRuleDevice));
 
         return Uni.createFrom().item(policyRuleBasic.getPolicyRuleState());
     }