value = "The identity of the policy type to get the definition for. When this parameter is given, max one schema will be returned") //
         @RequestParam(name = Consts.POLICY_TYPE_ID_PARAM, required = false) String policyTypeId) {
         try {
-            if (ricId == null && policyTypeId == null) {
+            Ric ric = ricId == null ? null : rics.getRic(ricId);
+            if (ric == null && policyTypeId == null) {
                 Collection<PolicyType> types = this.policyTypes.getAll();
                 return new ResponseEntity<>(toPolicyTypeSchemasJson(types), HttpStatus.OK);
-            } else if (ricId != null && policyTypeId != null) {
-                Collection<PolicyType> types = new ArrayList<>();
-                if (rics.getRic(ricId).isSupportingType(policyTypeId)) {
-                    types.add(policyTypes.getType(policyTypeId));
+            } else if (ric != null && policyTypeId != null) {
+                synchronized (ric) {
+                    assertRicStateIdleSync(ric);
+                    Collection<PolicyType> types = new ArrayList<>();
+                    if (rics.getRic(ricId).isSupportingType(policyTypeId)) {
+                        types.add(policyTypes.getType(policyTypeId));
+                    }
+                    return new ResponseEntity<>(toPolicyTypeSchemasJson(types), HttpStatus.OK);
+                }
+            } else if (ric != null) {
+                synchronized (ric) {
+                    assertRicStateIdleSync(ric);
+                    Collection<PolicyType> types = rics.getRic(ricId).getSupportedPolicyTypes();
+                    return new ResponseEntity<>(toPolicyTypeSchemasJson(types), HttpStatus.OK);
                 }
-                return new ResponseEntity<>(toPolicyTypeSchemasJson(types), HttpStatus.OK);
-            } else if (ricId != null) {
-                Collection<PolicyType> types = rics.getRic(ricId).getSupportedPolicyTypes();
-                return new ResponseEntity<>(toPolicyTypeSchemasJson(types), HttpStatus.OK);
             } else {
                 Collection<PolicyType> types = new ArrayList<>();
                 types.add(policyTypes.getType(policyTypeId));
         return Mono.just("{}");
     }
 
+    private void assertRicStateIdleSync(Ric ric) throws ServiceException {
+        if (ric.getState() != Ric.RicState.AVAILABLE) {
+            throw new ServiceException("Near-RT RIC: " + ric.id() + " is " + ric.getState());
+        }
+    }
+
     private Mono<Object> assertRicStateIdle(Ric ric) {
         if (ric.getState() == Ric.RicState.AVAILABLE) {
             return Mono.just("{}");
         } else {
-            logger.debug("Request rejected RIC not IDLE, ric: {}", ric);
+            logger.debug("Request rejected Near-RT RIC not IDLE, ric: {}", ric);
             RejectionException e = new RejectionException(
-                "Ric is not operational, RIC name: " + ric.id() + ", state: " + ric.getState(), HttpStatus.LOCKED);
+                "Near-RT RIC: is not operational, id: " + ric.id() + ", state: " + ric.getState(), HttpStatus.LOCKED);
             return Mono.error(e);
         }
     }
 
         supervision.checkAllRics(); // The created policy should be put in the RIC
 
         // Wait until synch is completed
-        await().untilAsserted(() -> RicState.SYNCHRONIZING.equals(rics.getRic(ric1Name).getState()));
-        await().untilAsserted(() -> RicState.AVAILABLE.equals(rics.getRic(ric1Name).getState()));
-        await().untilAsserted(() -> RicState.AVAILABLE.equals(rics.getRic("ric2").getState()));
+        waitForRicState(ric1Name, RicState.SYNCHRONIZING);
+        waitForRicState(ric1Name, RicState.AVAILABLE);
+        waitForRicState("ric2", RicState.AVAILABLE);
 
         Policies ricPolicies = getA1Client(ric1Name).getPolicies();
         assertThat(ricPolicies.size()).isEqualTo(1);
         addPolicyType("type1", "ric1");
         addPolicyType("type2", "ric2");
 
+        waitForRicState("ric1", RicState.AVAILABLE);
+        waitForRicState("ric2", RicState.AVAILABLE);
+
         String url = "/policy-schemas";
         String rsp = this.restClient().get(url).block();
         assertThat(rsp).contains("type1") //
             .verify();
     }
 
+    private void waitForRicState(String ricId, RicState state) throws ServiceException {
+        Ric ric = rics.getRic(ricId);
+        await().untilAsserted(() -> state.equals(ric.getState()));
+    }
+
     private boolean checkWebClientError(Throwable throwable, HttpStatus expStatus, String responseContains,
         boolean expectApplicationProblemJsonMediaType) {
         assertTrue(throwable instanceof WebClientResponseException);