private Set<String> getServicesForPlatform(long manifestPlatformId) {
   List<CmsRfcRelation> rfcRelations =
       cmRfcMrgProcessor.getFromCIRelationsNaked(
           manifestPlatformId, MANIFEST_REQUIRES, null, null);
   return rfcRelations
       .stream()
       .filter(this::needServices)
       .flatMap(this::getServices)
       .collect(toSet());
 }
 /**
  * This checks the cloud is configured with all services which are required for deployment of
  * platform .
  *
  * @param manifestPlatformId the id of platform for which services need to be found
  * @throws TransistorException if missing services are found.
  */
 public void check4missingServices(long manifestPlatformId) {
   // get all required components of platforms
   List<CmsRfcRelation> requiredRelations =
       cmRfcMrgProcessor.getFromCIRelationsNaked(
           manifestPlatformId, MANIFEST_REQUIRES, null, null);
   Set<String> requiredServices =
       requiredRelations
           .stream()
           .filter(this::needServices)
           .flatMap(this::getServices)
           .collect(toSet());
   Map<String, TreeSet<String>> cloudsMissingServices =
       getMissingCloudServices(manifestPlatformId, requiredServices);
   if (!cloudsMissingServices.isEmpty()) {
     // <{c1=[s1]}> mess
     String message =
         String.format(
             "All services <%s> required for platform (%s) are not configured for clouds.Please contact your org. admin .",
             cloudsMissingServices.toString(),
             withoutManifest(requiredRelations.get(0).getNsPath()));
     throw new TransistorException(TRANSISTOR_MISSING_CLOUD_SERVICES, message);
   }
 }